[INFO] cloning repository https://github.com/HomuraCN/Homura
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/HomuraCN/Homura" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHomuraCN%2FHomura", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHomuraCN%2FHomura'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 5b4d3fc8edf3ec146308abd8e2e2b5f3b1520042
[INFO] fixing HomuraCN/Homura against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHomuraCN%2FHomura" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/HomuraCN/Homura
[INFO] finished tweaking git repo https://github.com/HomuraCN/Homura
[INFO] tweaked toml for git repo https://github.com/HomuraCN/Homura written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/HomuraCN/Homura on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/HomuraCN/Homura already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded oorandom v11.1.4
[INFO] [stderr]   Downloaded unindent v0.2.3
[INFO] [stderr]   Downloaded pyo3-macros v0.21.2
[INFO] [stderr]   Downloaded plotters-svg v0.3.6
[INFO] [stderr]   Downloaded pyo3-log v0.10.0
[INFO] [stderr]   Downloaded plotters-backend v0.3.6
[INFO] [stderr]   Downloaded boomphf v0.6.0
[INFO] [stderr]   Downloaded wyhash v0.5.0
[INFO] [stderr]   Downloaded target-lexicon v0.12.15
[INFO] [stderr]   Downloaded pyo3-build-config v0.21.2
[INFO] [stderr]   Downloaded pyo3-ffi v0.21.2
[INFO] [stderr]   Downloaded numpy v0.21.0
[INFO] [stderr]   Downloaded pyo3-macros-backend v0.21.2
[INFO] [stderr]   Downloaded plotters v0.3.6
[INFO] [stderr]   Downloaded pyo3 v0.21.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 39e0eb9571da1e089b79ff3f55abf1c557ef777bad416fe35f6ab2914ec00395
[INFO] running `Command { std: "docker" "start" "39e0eb9571da1e089b79ff3f55abf1c557ef777bad416fe35f6ab2914ec00395", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "39e0eb9571da1e089b79ff3f55abf1c557ef777bad416fe35f6ab2914ec00395" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "39e0eb9571da1e089b79ff3f55abf1c557ef777bad416fe35f6ab2914ec00395", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "39e0eb9571da1e089b79ff3f55abf1c557ef777bad416fe35f6ab2914ec00395" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating libriichi/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Migrating exe-wrapper/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Compiling syn v2.0.72
[INFO] [stderr]    Compiling target-lexicon v0.12.15
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling serde v1.0.204
[INFO] [stderr]    Compiling portable-atomic v1.7.0
[INFO] [stderr]     Checking either v1.13.0
[INFO] [stderr]    Compiling matrixmultiply v0.3.8
[INFO] [stderr]    Compiling cc v1.1.6
[INFO] [stderr]    Compiling serde_json v1.0.120
[INFO] [stderr]    Compiling indoc v2.0.5
[INFO] [stderr]     Checking inventory v0.3.15
[INFO] [stderr]     Checking memoffset v0.9.1
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking unindent v0.2.3
[INFO] [stderr]    Compiling ahash v0.8.11
[INFO] [stderr]     Checking log v0.4.22
[INFO] [stderr]     Checking unicode-width v0.1.13
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking miniz_oxide v0.7.4
[INFO] [stderr]     Checking wyhash v0.5.0
[INFO] [stderr]     Checking crossbeam-channel v0.5.13
[INFO] [stderr]     Checking zerocopy v0.7.35
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]     Checking console v0.15.8
[INFO] [stderr]     Checking arc-swap v1.7.1
[INFO] [stderr]     Checking sha3 v0.10.8
[INFO] [stderr]     Checking half v2.4.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking flate2 v1.0.30
[INFO] [stderr]     Checking plotters-backend v0.3.6
[INFO] [stderr]     Checking ciborium-io v0.2.2
[INFO] [stderr]     Checking glob v0.3.1
[INFO] [stderr]     Checking regex-syntax v0.8.4
[INFO] [stderr]     Checking clap_builder v4.5.10
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking cast v0.3.0
[INFO] [stderr]     Checking plotters-svg v0.3.6
[INFO] [stderr]     Checking crossbeam v0.8.4
[INFO] [stderr]     Checking is-terminal v0.4.12
[INFO] [stderr]     Checking anes v0.1.6
[INFO] [stderr]     Checking oorandom v11.1.4
[INFO] [stderr]     Checking dunce v1.0.4
[INFO] [stderr]    Compiling pyo3-build-config v0.21.2
[INFO] [stderr]     Checking exe-wrapper v0.1.0 (/opt/rustwide/workdir/exe-wrapper)
[INFO] [stderr]    Migrating exe-wrapper/src/main.rs from 2021 edition to 2024
[INFO] [stderr]    Compiling libmimalloc-sys v0.1.39
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking plotters v0.3.6
[INFO] [stderr]     Checking ndarray v0.15.6
[INFO] [stderr]     Checking regex-automata v0.4.7
[INFO] [stderr]     Checking boomphf v0.6.0
[INFO] [stderr]     Checking indicatif v0.17.8
[INFO] [stderr]     Checking mimalloc v0.1.43
[INFO] [stderr]     Checking criterion-plot v0.5.0
[INFO] [stderr]     Checking clap v4.5.10
[INFO] [stderr]    Compiling pyo3-ffi v0.21.2
[INFO] [stderr]    Compiling pyo3 v0.21.2
[INFO] [stderr]    Compiling libriichi v0.1.0 (/opt/rustwide/workdir/libriichi)
[INFO] [stderr]    Migrating libriichi/build.rs from 2021 edition to 2024
[INFO] [stderr]     Checking regex v1.10.5
[INFO] [stderr]    Compiling derivative v2.2.0
[INFO] [stderr]    Compiling darling_core v0.20.10
[INFO] [stderr]    Compiling pyo3-macros-backend v0.21.2
[INFO] [stderr]    Compiling serde_derive v1.0.204
[INFO] [stderr]    Compiling derive_more v0.99.18
[INFO] [stderr]    Compiling darling_macro v0.20.10
[INFO] [stderr]    Compiling darling v0.20.10
[INFO] [stderr]    Compiling serde_with_macros v3.9.0
[INFO] [stderr]    Compiling pyo3-macros v0.21.2
[INFO] [stderr]     Checking tinyvec v1.8.0
[INFO] [stderr]     Checking serde_with v3.9.0
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking numpy v0.21.0
[INFO] [stderr]     Checking pyo3-log v0.10.0
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stderr]    Migrating libriichi/src/lib.rs from 2021 edition to 2024
[INFO] [stderr] error: errors present after applying fixes to crate `riichi`
[INFO] [stderr]  --> libriichi/src/arena/one_vs_three.rs
[INFO] [stderr]  ::: libriichi/src/arena/two_vs_two.rs
[INFO] [stderr]  ::: libriichi/src/consts.rs
[INFO] [stderr]  ::: libriichi/src/dataset/gameplay.rs
[INFO] [stderr]  ::: libriichi/src/dataset/grp.rs
[INFO] [stderr]  ::: libriichi/src/mjai/bot.rs
[INFO] [stderr]  ::: libriichi/src/py_helper.rs
[INFO] [stderr]  ::: libriichi/src/stat.rs
[INFO] [stderr]  ::: libriichi/src/state/action.rs
[INFO] [stderr]  ::: libriichi/src/state/getter.rs
[INFO] [stderr]  ::: libriichi/src/state/obs_repr.rs
[INFO] [stderr]  ::: libriichi/src/state/player_state.rs
[INFO] [stderr]   = cause: error: expected item, found `{`
[INFO] [stderr]              --> libriichi/src/dataset/gameplay.rs:80:1
[INFO] [stderr]               |
[INFO] [stderr]            80 | { unsafe #[pymethods]}
[INFO] [stderr]               | ^ expected item
[INFO] [stderr]               |
[INFO] [stderr]               = note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: expected item, found `{`
[INFO] [stderr]              --> libriichi/src/dataset/grp.rs:29:1
[INFO] [stderr]               |
[INFO] [stderr]            29 | { unsafe #[pymethods]}
[INFO] [stderr]               | ^ expected item
[INFO] [stderr]               |
[INFO] [stderr]               = note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: expected item, found `{`
[INFO] [stderr]               --> libriichi/src/stat.rs:444:1
[INFO] [stderr]                |
[INFO] [stderr]            444 | { unsafe #[pymethods]}
[INFO] [stderr]                | ^ expected item
[INFO] [stderr]                |
[INFO] [stderr]                = note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: expected item, found `{`
[INFO] [stderr]              --> libriichi/src/state/action.rs:43:1
[INFO] [stderr]               |
[INFO] [stderr]            43 | { unsafe #[pymethods]}
[INFO] [stderr]               | ^ expected item
[INFO] [stderr]               |
[INFO] [stderr]               = note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: expected item, found `{`
[INFO] [stderr]             --> libriichi/src/state/getter.rs:6:1
[INFO] [stderr]              |
[INFO] [stderr]            6 | { unsafe #[pymethods]}
[INFO] [stderr]              | ^ expected item
[INFO] [stderr]              |
[INFO] [stderr]              = note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: expected item, found `{`
[INFO] [stderr]               --> libriichi/src/state/player_state.rs:142:1
[INFO] [stderr]                |
[INFO] [stderr]            142 | { unsafe #[pymethods]}
[INFO] [stderr]                | ^ expected item
[INFO] [stderr]                |
[INFO] [stderr]                = note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error[E0689]: can't call method `exp` on ambiguous numeric type `{float}`
[INFO] [stderr]               --> libriichi/src/state/obs_repr.rs:228:71
[INFO] [stderr]                |
[INFO] [stderr]            228 |                     let v = (-0.2 * (max_kawa_len - 1 - turn) as f32).exp();
[INFO] [stderr]                |                                                                       ^^^
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error[E0689]: can't call method `exp` on ambiguous numeric type `{float}`
[INFO] [stderr]               --> libriichi/src/state/obs_repr.rs:266:79
[INFO] [stderr]                |
[INFO] [stderr]            266 | ...                   let v = (-0.2 * (max_kawa_len - 1 - turn) as f32).exp();
[INFO] [stderr]                |                                                                         ^^^
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:37:9
[INFO] [stderr]               |
[INFO] [stderr]            37 |         &self,
[INFO] [stderr]               |         ^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]               = note: `--force-warn unsafe-op-in-unsafe-fn` implied by `--force-warn rust-2024-compatibility`
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:38:21
[INFO] [stderr]               |
[INFO] [stderr]            38 |         challenger: PyObject,
[INFO] [stderr]               |                     ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:39:19
[INFO] [stderr]               |
[INFO] [stderr]            39 |         champion: PyObject,
[INFO] [stderr]               |                   ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:40:21
[INFO] [stderr]               |
[INFO] [stderr]            40 |         seed_start: (u64, u64),
[INFO] [stderr]               |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:41:21
[INFO] [stderr]               |
[INFO] [stderr]            41 |         seed_count: u64,
[INFO] [stderr]               |                     ^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:66:9
[INFO] [stderr]               |
[INFO] [stderr]            66 |         &self,
[INFO] [stderr]               |         ^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:67:17
[INFO] [stderr]               |
[INFO] [stderr]            67 |         engine: PyObject,
[INFO] [stderr]               |                 ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:68:21
[INFO] [stderr]               |
[INFO] [stderr]            68 |         seed_start: (u64, u64),
[INFO] [stderr]               |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:69:21
[INFO] [stderr]               |
[INFO] [stderr]            69 |         seed_count: u64,
[INFO] [stderr]               |                     ^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:91:9
[INFO] [stderr]               |
[INFO] [stderr]            91 |         &self,
[INFO] [stderr]               |         ^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:92:17
[INFO] [stderr]               |
[INFO] [stderr]            92 |         engine: PyObject,
[INFO] [stderr]               |                 ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:93:21
[INFO] [stderr]               |
[INFO] [stderr]            93 |         seed_start: (u64, u64),
[INFO] [stderr]               |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:94:21
[INFO] [stderr]               |
[INFO] [stderr]            94 |         seed_count: u64,
[INFO] [stderr]               |                     ^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:36:9
[INFO] [stderr]               |
[INFO] [stderr]            36 |         &self,
[INFO] [stderr]               |         ^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:37:21
[INFO] [stderr]               |
[INFO] [stderr]            37 |         challenger: PyObject,
[INFO] [stderr]               |                     ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:38:19
[INFO] [stderr]               |
[INFO] [stderr]            38 |         champion: PyObject,
[INFO] [stderr]               |                   ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:39:21
[INFO] [stderr]               |
[INFO] [stderr]            39 |         seed_start: (u64, u64),
[INFO] [stderr]               |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:40:21
[INFO] [stderr]               |
[INFO] [stderr]            40 |         seed_count: u64,
[INFO] [stderr]               |                     ^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:58:9
[INFO] [stderr]               |
[INFO] [stderr]            58 |         &self,
[INFO] [stderr]               |         ^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:59:17
[INFO] [stderr]               |
[INFO] [stderr]            59 |         engine: PyObject,
[INFO] [stderr]               |                 ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:60:21
[INFO] [stderr]               |
[INFO] [stderr]            60 |         seed_start: (u64, u64),
[INFO] [stderr]               |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:61:21
[INFO] [stderr]               |
[INFO] [stderr]            61 |         seed_count: u64,
[INFO] [stderr]               |                     ^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:76:9
[INFO] [stderr]               |
[INFO] [stderr]            76 |         &self,
[INFO] [stderr]               |         ^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:77:17
[INFO] [stderr]               |
[INFO] [stderr]            77 |         engine: PyObject,
[INFO] [stderr]               |                 ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:78:21
[INFO] [stderr]               |
[INFO] [stderr]            78 |         seed_start: (u64, u64),
[INFO] [stderr]               |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:79:21
[INFO] [stderr]               |
[INFO] [stderr]            79 |         seed_count: u64,
[INFO] [stderr]               |                     ^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:94:9
[INFO] [stderr]               |
[INFO] [stderr]            94 |         &self,
[INFO] [stderr]               |         ^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:95:17
[INFO] [stderr]               |
[INFO] [stderr]            95 |         engine: PyObject,
[INFO] [stderr]               |                 ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:96:15
[INFO] [stderr]               |
[INFO] [stderr]            96 |         seed: (u64, u64),
[INFO] [stderr]               |               ^^^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:97:16
[INFO] [stderr]               |
[INFO] [stderr]            97 |         split: usize,
[INFO] [stderr]               |                ^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]    --> libriichi/src/macros.rs:165:9
[INFO] [stdout]     |
[INFO] [stdout] 165 |     ($o:expr, $($s:tt)|* $(|)?) => {
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]     = note: `--force-warn edition-2024-expr-fragment-specifier` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]     |
[INFO] [stdout] 165 |     ($o:expr_2021, $($s:tt)|* $(|)?) => {
[INFO] [stdout]     |             +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/arena/board.rs:695:34
[INFO] [stdout]     |
[INFO] [stdout] 695 |                     .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                                  ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/arena/board.rs:695:30
[INFO] [stdout]     |
[INFO] [stdout] 695 |                     .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                              ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout]     = note: `--force-warn rust-2024-incompatible-pat` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 695 |                     .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/arena/board.rs:705:34
[INFO] [stdout]     |
[INFO] [stdout] 705 |                     .filter(|(_, &has_it)| has_it)
[INFO] [stdout]     |                                  ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/arena/board.rs:705:30
[INFO] [stdout]     |
[INFO] [stdout] 705 |                     .filter(|(_, &has_it)| has_it)
[INFO] [stdout]     |                              ^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 705 |                     .filter(|&(_, &has_it)| has_it)
[INFO] [stdout]     |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/arena/board.rs:730:34
[INFO] [stdout]     |
[INFO] [stdout] 730 |                     .filter(|(_, &c)| c)
[INFO] [stdout]     |                                  ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/arena/board.rs:730:30
[INFO] [stdout]     |
[INFO] [stdout] 730 |                     .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 730 |                     .filter(|&(_, &c)| c)
[INFO] [stdout]     |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: `--force-warn unsafe-op-in-unsafe-fn` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]              --> libriichi/src/consts.rs:20:33
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:38:21
[INFO] [stdout]    |
[INFO] [stdout] 38 |         challenger: PyObject,
[INFO] [stdout]    |                     ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:39:19
[INFO] [stdout]    |
[INFO] [stdout] 39 |         champion: PyObject,
[INFO] [stdout]    |                   ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            20 | pub const fn obs_shape(version: u32) -> (usize, usize) {
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:40:21
[INFO] [stdout]    |
[INFO] [stdout] 40 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |                                 ^^^ call to unsafe function
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:41:21
[INFO] [stdout]    |
[INFO] [stdout] 41 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:67:17
[INFO] [stdout]    |
[INFO] [stdout] 67 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:68:21
[INFO] [stdout]    |
[INFO] [stdout] 68 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:69:21
[INFO] [stdout]    |
[INFO] [stdout] 69 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 91 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:92:17
[INFO] [stdout]    |
[INFO] [stdout] 92 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]              --> libriichi/src/consts.rs:32:40
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:93:21
[INFO] [stdout]    |
[INFO] [stdout] 93 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:94:21
[INFO] [stdout]    |
[INFO] [stdout] 94 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            32 | pub const fn oracle_obs_shape(version: u32) -> (usize, usize) {
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |                                        ^^^ call to unsafe function
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:37:21
[INFO] [stdout]    |
[INFO] [stdout] 37 |         challenger: PyObject,
[INFO] [stdout]    |                     ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:38:19
[INFO] [stdout]    |
[INFO] [stdout] 38 |         champion: PyObject,
[INFO] [stdout]    |                   ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:39:21
[INFO] [stdout]    |
[INFO] [stdout] 39 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:40:21
[INFO] [stdout]    |
[INFO] [stdout] 40 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:59:17
[INFO] [stdout]    |
[INFO] [stdout] 59 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            warning: relative drop order changing in Rust 2024
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:60:21
[INFO] [stdout]    |
[INFO] [stdout] 60 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               --> libriichi/src/py_helper.rs:13:39
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:61:21
[INFO] [stdout]    |
[INFO] [stdout] 61 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:76:9
[INFO] [stdout]    |
[INFO] [stdout] 76 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]             11 |     let name = m.name()?;
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |         ----
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:78:21
[INFO] [stdout]    |
[INFO] [stdout] 78 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |         |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:79:21
[INFO] [stdout]    |
[INFO] [stdout] 79 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |         `name` calls a custom destructor
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |         `name` will be dropped later as of Edition 2024
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:95:17
[INFO] [stdout]    |
[INFO] [stdout] 95 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]             12 |     let script = format!("import sys; sys.modules['{prefix}.{name}'] = {name}; del sys");
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:96:15
[INFO] [stdout]    |
[INFO] [stdout] 96 |         seed: (u64, u64),
[INFO] [stdout]    |               ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]             13 |     py.run_bound(&script, None, Some(&super_mod.dict()))
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:97:16
[INFO] [stdout]    |
[INFO] [stdout] 97 |         split: usize,
[INFO] [stdout]    |                ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |                                       ^^^^^^^^^^^^^^^^
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/consts.rs:20:33
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const fn obs_shape(version: u32) -> (usize, usize) {
[INFO] [stdout]    |                                 ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |                                       |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/consts.rs:32:40
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub const fn oracle_obs_shape(version: u32) -> (usize, usize) {
[INFO] [stdout]    |                                        ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |                                       this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/gameplay.rs:94:18
[INFO] [stdout]    |
[INFO] [stdout] 94 |         version: u32,
[INFO] [stdout]    |                  ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |                                       up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:120:17
[INFO] [stdout]     |
[INFO] [stdout] 120 |     fn load_log(&self, raw_log: &str) -> Result<Vec<Gameplay>> {
[INFO] [stdout]     |                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]             14 | }
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:120:33
[INFO] [stdout]     |
[INFO] [stdout] 120 |     fn load_log(&self, raw_log: &str) -> Result<Vec<Gameplay>> {
[INFO] [stdout]     |                                 ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:133:29
[INFO] [stdout]     |
[INFO] [stdout] 133 |     fn load_gz_log_files_py(&self, gzip_filenames: Vec<String>) -> Result<Vec<Vec<Gameplay>>> {
[INFO] [stdout]     |                             ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:133:52
[INFO] [stdout]     |
[INFO] [stdout] 133 |     fn load_gz_log_files_py(&self, gzip_filenames: Vec<String>) -> Result<Vec<Vec<Gameplay>>> {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:137:17
[INFO] [stdout]     |
[INFO] [stdout] 137 |     fn __repr__(&self) -> String {
[INFO] [stdout]     |                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:80:1
[INFO] [stdout]     |
[INFO] [stdout]  80 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/pyo3-0.21.2/src/instance.rs:407:1
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:193:22
[INFO] [stdout]     |
[INFO] [stdout] 193 |     fn take_obs<'py>(&mut self, py: Python<'py>) -> Vec<Bound<'py, PyArray2<f32>>> {
[INFO] [stdout]     |                      ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:199:32
[INFO] [stdout]     |
[INFO] [stdout] 199 |     fn take_invisible_obs<'py>(&mut self, py: Python<'py>) -> Vec<Bound<'py, PyArray2<f32>>> {
[INFO] [stdout]     |                                ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            407 | impl<T> Drop for Bound<'_, T> {
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:205:21
[INFO] [stdout]     |
[INFO] [stdout] 205 |     fn take_actions(&mut self) -> Vec<i64> {
[INFO] [stdout]     |                     ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:208:24
[INFO] [stdout]     |
[INFO] [stdout] 208 |     fn take_masks<'py>(&mut self, py: Python<'py>) -> Vec<Bound<'py, PyArray1<bool>>> {
[INFO] [stdout]     |                        ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            note: `name` invokes this custom destructor
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:214:22
[INFO] [stdout]     |
[INFO] [stdout] 214 |     fn take_at_kyoku(&mut self) -> Vec<u8> {
[INFO] [stdout]     |                      ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/pyo3-0.21.2/src/instance.rs:407:1
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:217:19
[INFO] [stdout]     |
[INFO] [stdout] 217 |     fn take_dones(&mut self) -> Vec<bool> {
[INFO] [stdout]     |                   ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:220:25
[INFO] [stdout]     |
[INFO] [stdout] 220 |     fn take_apply_gamma(&mut self) -> Vec<bool> {
[INFO] [stdout]     |                         ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            407 | impl<T> Drop for Bound<'_, T> {
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:223:22
[INFO] [stdout]     |
[INFO] [stdout] 223 |     fn take_at_turns(&mut self) -> Vec<u8> {
[INFO] [stdout]     |                      ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:226:22
[INFO] [stdout]     |
[INFO] [stdout] 226 |     fn take_shantens(&mut self) -> Vec<i8> {
[INFO] [stdout]     |                      ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:230:17
[INFO] [stdout]     |
[INFO] [stdout] 230 |     fn take_grp(&mut self) -> Grp {
[INFO] [stdout]     |                 ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                = warning: this changes meaning in Rust 2024
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:234:29
[INFO] [stdout]     |
[INFO] [stdout] 234 |     const fn take_player_id(&self) -> u8 {
[INFO] [stdout]     |                             ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:32:26
[INFO] [stdout]    |
[INFO] [stdout] 32 |     fn load_log(raw_log: &str) -> Result<Self> {
[INFO] [stdout]    |                          ^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:43:45
[INFO] [stdout]    |
[INFO] [stdout] 43 |     fn load_gz_log_files_py(gzip_filenames: Vec<PyBackedStr>) -> Result<Vec<Self>> {
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:48:30
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn take_feature<'py>(&mut self, py: Python<'py>) -> Bound<'py, PyArray2<f64>> {
[INFO] [stdout]    |                              ^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:51:38
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub const fn take_rank_by_player(&self) -> [u8; 4] {
[INFO] [stdout]    |                                      ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:54:36
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub const fn take_final_scores(&self) -> [i32; 4] {
[INFO] [stdout]    |                                    ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]              --> libriichi/src/mjai/bot.rs:20:20
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:167:30
[INFO] [stdout]     |
[INFO] [stdout] 167 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:167:26
[INFO] [stdout]     |
[INFO] [stdout] 167 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                          ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 167 |                 .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:175:30
[INFO] [stdout]     |
[INFO] [stdout] 175 |                 .filter(|(_, &has_it)| has_it)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:175:26
[INFO] [stdout]     |
[INFO] [stdout] 175 |                 .filter(|(_, &has_it)| has_it)
[INFO] [stdout]     |                          ^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 175 |                 .filter(|&(_, &has_it)| has_it)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            20 |     fn new(engine: PyObject, player_id: u8) -> Result<Self> {
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:200:30
[INFO] [stdout]     |
[INFO] [stdout] 200 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:200:26
[INFO] [stdout]     |
[INFO] [stdout] 200 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                          ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 200 |                 .filter(|&(_, &c)| c)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |                    ^^^^^^^^ call to unsafe function
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> libriichi/src/py_helper.rs:13:39
[INFO] [stdout]     |
[INFO] [stdout]  11 |     let name = m.name()?;
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `name` calls a custom destructor
[INFO] [stdout]     |         `name` will be dropped later as of Edition 2024
[INFO] [stdout]  12 |     let script = format!("import sys; sys.modules['{prefix}.{name}'] = {name}; del sys");
[INFO] [stdout]  13 |     py.run_bound(&script, None, Some(&super_mod.dict()))
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                       up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  14 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/pyo3-0.21.2/src/instance.rs:407:1
[INFO] [stdout]     |
[INFO] [stdout] 407 | impl<T> Drop for Bound<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `name` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/pyo3-0.21.2/src/instance.rs:407:1
[INFO] [stdout]     |
[INFO] [stdout] 407 | impl<T> Drop for Bound<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/mjai/bot.rs:20:20
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn new(engine: PyObject, player_id: u8) -> Result<Self> {
[INFO] [stdout]    |                    ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/mjai/bot.rs:20:41
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn new(engine: PyObject, player_id: u8) -> Result<Self> {
[INFO] [stdout]    |                                         ^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/mjai/bot.rs:39:17
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn react_py(&mut self, line: &str, can_act: bool, py: Python<'_>) -> Result<Option<String>> {
[INFO] [stdout]    |                 ^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/mjai/bot.rs:39:34
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn react_py(&mut self, line: &str, can_act: bool, py: Python<'_>) -> Result<Option<String>> {
[INFO] [stdout]    |                                  ^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:448:26
[INFO] [stdout]     |
[INFO] [stdout] 448 |     pub fn from_dir(dir: &str, player_name: &str, disable_progress_bar: bool) -> Result<Self> {
[INFO] [stdout]     |                          ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:448:45
[INFO] [stdout]     |
[INFO] [stdout] 448 |     pub fn from_dir(dir: &str, player_name: &str, disable_progress_bar: bool) -> Result<Self> {
[INFO] [stdout]     |                                             ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]              --> libriichi/src/mjai/bot.rs:20:41
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:500:26
[INFO] [stdout]     |
[INFO] [stdout] 500 |     pub fn from_log(log: &str, player_id: u8) -> Result<Self> {
[INFO] [stdout]     |                          ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:500:43
[INFO] [stdout]     |
[INFO] [stdout] 500 |     pub fn from_log(log: &str, player_id: u8) -> Result<Self> {
[INFO] [stdout]     |                                           ^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            20 |     fn new(engine: PyObject, player_id: u8) -> Result<Self> {
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:511:27
[INFO] [stdout]     |
[INFO] [stdout] 511 |     pub const fn total_pt(&self, pts: [i64; 4]) -> i64 {
[INFO] [stdout]     |                           ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |                                         ^^ call to unsafe function
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:511:39
[INFO] [stdout]     |
[INFO] [stdout] 511 |     pub const fn total_pt(&self, pts: [i64; 4]) -> i64 {
[INFO] [stdout]     |                                       ^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:516:19
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn avg_pt(&self, pts: [i64; 4]) -> f64 {
[INFO] [stdout]     |                   ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:516:31
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn avg_pt(&self, pts: [i64; 4]) -> f64 {
[INFO] [stdout]     |                               ^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:522:21
[INFO] [stdout]     |
[INFO] [stdout] 522 |     pub fn avg_rank(&self) -> f64 {
[INFO] [stdout]     |                     ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:528:24
[INFO] [stdout]     |
[INFO] [stdout] 528 |     pub fn rank_1_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:534:24
[INFO] [stdout]     |
[INFO] [stdout] 534 |     pub fn rank_2_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:540:24
[INFO] [stdout]     |
[INFO] [stdout] 540 |     pub fn rank_3_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]              --> libriichi/src/mjai/bot.rs:39:17
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:546:24
[INFO] [stdout]     |
[INFO] [stdout] 546 |     pub fn rank_4_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:552:22
[INFO] [stdout]     |
[INFO] [stdout] 552 |     pub fn tobi_rate(&self) -> f64 {
[INFO] [stdout]     |                      ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            39 |     fn react_py(&mut self, line: &str, can_act: bool, py: Python<'_>) -> Result<Option<String>> {
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:559:31
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn avg_point_per_game(&self) -> f64 {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |                 ^^^^^^^^^ call to unsafe function
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:565:32
[INFO] [stdout]     |
[INFO] [stdout] 565 |     pub fn avg_point_per_round(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:572:32
[INFO] [stdout]     |
[INFO] [stdout] 572 |     pub fn avg_point_per_agari(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:578:36
[INFO] [stdout]     |
[INFO] [stdout] 578 |     pub fn avg_point_per_oya_agari(&self) -> f64 {
[INFO] [stdout]     |                                    ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:584:35
[INFO] [stdout]     |
[INFO] [stdout] 584 |     pub fn avg_point_per_ko_agari(&self) -> f64 {
[INFO] [stdout]     |                                   ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/mjai/bot.rs:39:34
[INFO] [stderr]               |
[INFO] [stderr]            39 |     fn react_py(&mut self, line: &str, can_act: bool, py: Python<'_>) -> Result<Option<String>> {
[INFO] [stderr]               |                                  ^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: aborting due to 8 previous errors; 37 warnings emitted
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            Some errors have detailed explanations: E0133, E0689.
[INFO] [stderr]            
[INFO] [stderr]            For more information about an error, try `rustc --explain E0133`.
[INFO] [stderr] help: to report this as a bug, open an issue at https://github.com/rust-lang/rust/issues, quoting the full output of this command
[INFO] [stderr] help: to possibly apply more fixes, pass in the `--broken-code` flag
[INFO] [stderr] note: original diagnostics will follow:
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:590:39
[INFO] [stdout]     |
[INFO] [stdout] 590 |     pub fn avg_point_per_riichi_agari(&self) -> f64 {
[INFO] [stdout]     |                                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:596:38
[INFO] [stdout]     |
[INFO] [stdout] 596 |     pub fn avg_point_per_fuuro_agari(&self) -> f64 {
[INFO] [stdout]     |                                      ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:602:37
[INFO] [stdout]     |
[INFO] [stdout] 602 |     pub fn avg_point_per_dama_agari(&self) -> f64 {
[INFO] [stdout]     |                                     ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:608:35
[INFO] [stdout]     |
[INFO] [stdout] 608 |     pub fn avg_point_per_ryukyoku(&self) -> f64 {
[INFO] [stdout]     |                                   ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:615:26
[INFO] [stdout]     |
[INFO] [stdout] 615 |     pub fn avg_agari_jun(&self) -> f64 {
[INFO] [stdout]     |                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:621:33
[INFO] [stdout]     |
[INFO] [stdout] 621 |     pub fn avg_riichi_agari_jun(&self) -> f64 {
[INFO] [stdout]     |                                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:627:32
[INFO] [stdout]     |
[INFO] [stdout] 627 |     pub fn avg_fuuro_agari_jun(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:633:31
[INFO] [stdout]     |
[INFO] [stdout] 633 |     pub fn avg_dama_agari_jun(&self) -> f64 {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:640:33
[INFO] [stdout]     |
[INFO] [stdout] 640 |     pub fn avg_point_per_houjuu(&self) -> f64 {
[INFO] [stdout]     |                                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:646:40
[INFO] [stdout]     |
[INFO] [stdout] 646 |     pub fn avg_point_per_houjuu_to_oya(&self) -> f64 {
[INFO] [stdout]     |                                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:652:39
[INFO] [stdout]     |
[INFO] [stdout] 652 |     pub fn avg_point_per_houjuu_to_ko(&self) -> f64 {
[INFO] [stdout]     |                                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:658:27
[INFO] [stdout]     |
[INFO] [stdout] 658 |     pub fn avg_houjuu_jun(&self) -> f64 {
[INFO] [stdout]     |                           ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:665:23
[INFO] [stdout]     |
[INFO] [stdout] 665 |     pub fn agari_rate(&self) -> f64 {
[INFO] [stdout]     |                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:671:24
[INFO] [stdout]     |
[INFO] [stdout] 671 |     pub fn houjuu_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:677:24
[INFO] [stdout]     |
[INFO] [stdout] 677 |     pub fn riichi_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:683:23
[INFO] [stdout]     |
[INFO] [stdout] 683 |     pub fn fuuro_rate(&self) -> f64 {
[INFO] [stdout]     |                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:689:26
[INFO] [stdout]     |
[INFO] [stdout] 689 |     pub fn ryukyoku_rate(&self) -> f64 {
[INFO] [stdout]     |                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:696:36
[INFO] [stdout]     |
[INFO] [stdout] 696 |     pub fn agari_rate_after_riichi(&self) -> f64 {
[INFO] [stdout]     |                                    ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:702:37
[INFO] [stdout]     |
[INFO] [stdout] 702 |     pub fn houjuu_rate_after_riichi(&self) -> f64 {
[INFO] [stdout]     |                                     ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:708:32
[INFO] [stdout]     |
[INFO] [stdout] 708 |     pub fn chasing_riichi_rate(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:714:31
[INFO] [stdout]     |
[INFO] [stdout] 714 |     pub fn riichi_chased_rate(&self) -> f64 {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:720:27
[INFO] [stdout]     |
[INFO] [stdout] 720 |     pub fn avg_riichi_jun(&self) -> f64 {
[INFO] [stdout]     |                           ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:726:29
[INFO] [stdout]     |
[INFO] [stdout] 726 |     pub fn avg_riichi_point(&self) -> f64 {
[INFO] [stdout]     |                             ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:733:30
[INFO] [stdout]     |
[INFO] [stdout] 733 |     pub fn agari_rate_as_oya(&self) -> f64 {
[INFO] [stdout]     |                              ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:739:30
[INFO] [stdout]     |
[INFO] [stdout] 739 |     pub fn agari_as_oya_rate(&self) -> f64 {
[INFO] [stdout]     |                              ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:745:31
[INFO] [stdout]     |
[INFO] [stdout] 745 |     pub fn houjuu_to_oya_rate(&self) -> f64 {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:752:26
[INFO] [stdout]     |
[INFO] [stdout] 752 |     pub fn avg_fuuro_num(&self) -> f64 {
[INFO] [stdout]     |                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:758:35
[INFO] [stdout]     |
[INFO] [stdout] 758 |     pub fn agari_rate_after_fuuro(&self) -> f64 {
[INFO] [stdout]     |                                   ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:764:36
[INFO] [stdout]     |
[INFO] [stdout] 764 |     pub fn houjuu_rate_after_fuuro(&self) -> f64 {
[INFO] [stdout]     |                                    ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:770:28
[INFO] [stdout]     |
[INFO] [stdout] 770 |     pub fn avg_fuuro_point(&self) -> f64 {
[INFO] [stdout]     |                            ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:777:25
[INFO] [stdout]     |
[INFO] [stdout] 777 |     pub fn yakuman_rate(&self) -> f64 {
[INFO] [stdout]     |                         ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:783:32
[INFO] [stdout]     |
[INFO] [stdout] 783 |     pub fn nagashi_mangan_rate(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:787:16
[INFO] [stdout]     |
[INFO] [stdout] 787 |     fn __str__(&self) -> String {
[INFO] [stdout]     |                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:790:17
[INFO] [stdout]     |
[INFO] [stdout] 790 |     fn __repr__(&self) -> String {
[INFO] [stdout]     |                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:48:26
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub const fn can_chi(&self) -> bool {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:55:26
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub const fn can_kan(&self) -> bool {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:62:28
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub const fn can_agari(&self) -> bool {
[INFO] [stdout]    |                            ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:69:27
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub const fn can_pass(&self) -> bool {
[INFO] [stdout]    |                           ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:76:26
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub const fn can_act(&self) -> bool {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:86:17
[INFO] [stdout]    |
[INFO] [stdout] 86 |     fn __repr__(&self) -> String {
[INFO] [stdout]    |                 ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub const fn player_id(&self) -> u8 {
[INFO] [stdout]    |                            ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:17:24
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub const fn kyoku(&self) -> u8 {
[INFO] [stdout]    |                        ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:23:24
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub const fn honba(&self) -> u8 {
[INFO] [stdout]    |                        ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:29:26
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub const fn kyotaku(&self) -> u8 {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:35:25
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub const fn is_oya(&self) -> bool {
[INFO] [stdout]    |                         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:42:24
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub const fn tehai(&self) -> [u8; 34] {
[INFO] [stdout]    |                        ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:48:31
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub const fn akas_in_hand(&self) -> [bool; 3] {
[INFO] [stdout]    |                               ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:55:17
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn chis(&self) -> &[u8] {
[INFO] [stdout]    |                 ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:61:17
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn pons(&self) -> &[u8] {
[INFO] [stdout]    |                 ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:67:20
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub fn minkans(&self) -> &[u8] {
[INFO] [stdout]    |                    ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:73:19
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn ankans(&self) -> &[u8] {
[INFO] [stdout]    |                   ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:80:26
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub const fn at_turn(&self) -> u8 {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:86:26
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub const fn shanten(&self) -> i8 {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:92:24
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub const fn waits(&self) -> [bool; 34] {
[INFO] [stdout]    |                        ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:98:27
[INFO] [stdout]    |
[INFO] [stdout] 98 |     fn last_self_tsumo_py(&self) -> Option<String> {
[INFO] [stdout]    |                           ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:103:26
[INFO] [stdout]     |
[INFO] [stdout] 103 |     fn last_kawa_tile_py(&self) -> Option<String> {
[INFO] [stdout]     |                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:110:28
[INFO] [stdout]     |
[INFO] [stdout] 110 |     pub const fn last_cans(&self) -> ActionCandidate {
[INFO] [stdout]     |                            ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:116:28
[INFO] [stdout]     |
[INFO] [stdout] 116 |     fn ankan_candidates_py(&self) -> Vec<String> {
[INFO] [stdout]     |                            ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:124:28
[INFO] [stdout]     |
[INFO] [stdout] 124 |     fn kakan_candidates_py(&self) -> Vec<String> {
[INFO] [stdout]     |                            ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:134:31
[INFO] [stdout]     |
[INFO] [stdout] 134 |     pub const fn can_w_riichi(&self) -> bool {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:140:39
[INFO] [stdout]     |
[INFO] [stdout] 140 |     pub const fn self_riichi_declared(&self) -> bool {
[INFO] [stdout]     |                                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:146:39
[INFO] [stdout]     |
[INFO] [stdout] 146 |     pub const fn self_riichi_accepted(&self) -> bool {
[INFO] [stdout]     |                                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:153:29
[INFO] [stdout]     |
[INFO] [stdout] 153 |     pub const fn at_furiten(&self) -> bool {
[INFO] [stdout]     |                             ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:134:26
[INFO] [stdout]     |
[INFO] [stdout] 134 |             .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                          ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:134:22
[INFO] [stdout]     |
[INFO] [stdout] 134 |             .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                      ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 134 |             .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:372:26
[INFO] [stdout]     |
[INFO] [stdout] 372 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                          ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:372:22
[INFO] [stdout]     |
[INFO] [stdout] 372 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                      ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 372 |             .filter(|&(_, &b)| b)
[INFO] [stdout]     |                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:378:26
[INFO] [stdout]     |
[INFO] [stdout] 378 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                          ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:378:22
[INFO] [stdout]     |
[INFO] [stdout] 378 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                      ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 378 |             .filter(|&(_, &b)| b)
[INFO] [stdout]     |                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:386:26
[INFO] [stdout]     |
[INFO] [stdout] 386 |             .filter(|(_, &c)| c)
[INFO] [stdout]     |                          ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:386:22
[INFO] [stdout]     |
[INFO] [stdout] 386 |             .filter(|(_, &c)| c)
[INFO] [stdout]     |                      ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 386 |             .filter(|&(_, &c)| c)
[INFO] [stdout]     |                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:436:30
[INFO] [stdout]     |
[INFO] [stdout] 436 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:436:26
[INFO] [stdout]     |
[INFO] [stdout] 436 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                          ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 436 |                 .filter(|&(_, &c)| c)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:454:30
[INFO] [stdout]     |
[INFO] [stdout] 454 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:454:26
[INFO] [stdout]     |
[INFO] [stdout] 454 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                          ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 454 |                 .filter(|&(_, &c)| c)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:460:30
[INFO] [stdout]     |
[INFO] [stdout] 460 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:460:26
[INFO] [stdout]     |
[INFO] [stdout] 460 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                          ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 460 |                 .filter(|&(_, &c)| c)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:468:34
[INFO] [stdout]     |
[INFO] [stdout] 468 |                     .filter(|(_, &c)| c)
[INFO] [stdout]     |                                  ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:468:30
[INFO] [stdout]     |
[INFO] [stdout] 468 |                     .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 468 |                     .filter(|&(_, &c)| c)
[INFO] [stdout]     |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:781:9
[INFO] [stdout]     |
[INFO] [stdout] 781 |         &self,
[INFO] [stdout]     |         ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:782:18
[INFO] [stdout]     |
[INFO] [stdout] 782 |         version: u32,
[INFO] [stdout]     |                  ^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:783:24
[INFO] [stdout]     |
[INFO] [stdout] 783 |         at_kan_select: bool,
[INFO] [stdout]     |                        ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:178:26
[INFO] [stdout]     |
[INFO] [stdout] 178 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                          ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:178:22
[INFO] [stdout]     |
[INFO] [stdout] 178 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                      ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 178 |             .filter(|&(_, &b)| b)
[INFO] [stdout]     |                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:147:27
[INFO] [stdout]     |
[INFO] [stdout] 147 |     pub fn new(player_id: u8) -> Self {
[INFO] [stdout]     |                           ^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:157:31
[INFO] [stdout]     |
[INFO] [stdout] 157 |     pub(super) fn update_json(&mut self, mjai_json: &str) -> Result<ActionCandidate> {
[INFO] [stdout]     |                               ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:157:53
[INFO] [stdout]     |
[INFO] [stdout] 157 |     pub(super) fn update_json(&mut self, mjai_json: &str) -> Result<ActionCandidate> {
[INFO] [stdout]     |                                                     ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:164:42
[INFO] [stdout]     |
[INFO] [stdout] 164 |     pub(super) fn validate_reaction_json(&self, mjai_json: &str) -> Result<()> {
[INFO] [stdout]     |                                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:164:60
[INFO] [stdout]     |
[INFO] [stdout] 164 |     pub(super) fn validate_reaction_json(&self, mjai_json: &str) -> Result<()> {
[INFO] [stdout]     |                                                            ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:173:23
[INFO] [stdout]     |
[INFO] [stdout] 173 |     pub fn brief_info(&self) -> String {
[INFO] [stdout]     |                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:142:1
[INFO] [stdout]     |
[INFO] [stdout] 142 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/update.rs:290:30
[INFO] [stdout]     |
[INFO] [stdout] 290 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/update.rs:290:26
[INFO] [stdout]     |
[INFO] [stdout] 290 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                          ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 290 |                 .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/algo/agari.rs:816:22
[INFO] [stdout]     |
[INFO] [stdout] 816 |         .filter(|(_, &c)| c > 0)
[INFO] [stdout]     |                      ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/algo/agari.rs:816:18
[INFO] [stdout]     |
[INFO] [stdout] 816 |         .filter(|(_, &c)| c > 0)
[INFO] [stdout]     |                  ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 816 |         .filter(|&(_, &c)| c > 0)
[INFO] [stdout]     |                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]   --> libriichi/src/hand.rs:72:22
[INFO] [stdout]    |
[INFO] [stdout] 72 |         .filter(|(_, &count)| count > 0)
[INFO] [stdout]    |                      ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> libriichi/src/hand.rs:72:18
[INFO] [stdout]    |
[INFO] [stdout] 72 |         .filter(|(_, &count)| count > 0)
[INFO] [stdout]    |                  ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] 72 |         .filter(|&(_, &count)| count > 0)
[INFO] [stdout]    |                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]   --> libriichi/src/hand.rs:89:22
[INFO] [stdout]    |
[INFO] [stdout] 89 |         .filter(|(_, &count)| count > 0)
[INFO] [stdout]    |                      ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> libriichi/src/hand.rs:89:18
[INFO] [stdout]    |
[INFO] [stdout] 89 |         .filter(|(_, &count)| count > 0)
[INFO] [stdout]    |                  ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] 89 |         .filter(|&(_, &count)| count > 0)
[INFO] [stdout]    |                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/hand.rs:107:30
[INFO] [stdout]     |
[INFO] [stdout] 107 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/hand.rs:107:26
[INFO] [stdout]     |
[INFO] [stdout] 107 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                          ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 107 |                 .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/hand.rs:137:22
[INFO] [stdout]     |
[INFO] [stdout] 137 |         .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                      ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/hand.rs:137:18
[INFO] [stdout]     |
[INFO] [stdout] 137 |         .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                  ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 137 |         .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:565:16
[INFO] [stdout]     |
[INFO] [stdout] 565 |             if let Ok(SinglePlayerTables { max_ev_table }) = state.single_player_tables() {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^----------------------------
[INFO] [stdout]     |                                                              |
[INFO] [stdout]     |                                                              this value has a significant drop implementation which may observe a major change in drop order and requires your discretion
[INFO] [stdout]     |
[INFO] [stdout] note: value invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.86/src/error.rs:600:1
[INFO] [stdout]     |
[INFO] [stdout] 600 | impl Drop for Error {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: the value is now dropped here in Edition 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:612:13
[INFO] [stdout]     |
[INFO] [stdout] 612 |             } else {
[INFO] [stdout]     |             ^
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-if-let-scope.html>
[INFO] [stdout]     = note: `--force-warn if-let-rescope` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021
[INFO] [stdout]     |
[INFO] [stdout] 565 ~             match state.single_player_tables() { Ok(SinglePlayerTables { max_ev_table }) => {
[INFO] [stdout] 566 |                 // Get the max EV from the table that maximizes EV, which should
[INFO] [stdout] ...
[INFO] [stdout] 611 |                 self.encode_sp_table(max_ev_table, cans.can_discard, ev_scale);
[INFO] [stdout] 612 ~             } _ => {
[INFO] [stdout] 613 |                 // Use the minimal tsumo agari point as the max EV. It is
[INFO] [stdout] ...
[INFO] [stdout] 622 |                 self.idx += 2 * 34 + 2 + 3 * MAX_NUM_TURNS;
[INFO] [stdout] 623 ~             }}
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] [stderr]    Migrating libriichi/src/bin/validate_logs.rs from 2021 edition to 2024
[INFO] [stderr] error: errors present after applying fixes to crate `riichi`
[INFO] [stderr]  --> libriichi/src/arena/one_vs_three.rs
[INFO] [stderr]  ::: libriichi/src/arena/two_vs_two.rs
[INFO] [stderr]  ::: libriichi/src/consts.rs
[INFO] [stderr]  ::: libriichi/src/dataset/gameplay.rs
[INFO] [stderr]  ::: libriichi/src/dataset/grp.rs
[INFO] [stderr]  ::: libriichi/src/mjai/bot.rs
[INFO] [stderr]  ::: libriichi/src/py_helper.rs
[INFO] [stderr]  ::: libriichi/src/stat.rs
[INFO] [stderr]  ::: libriichi/src/state/action.rs
[INFO] [stderr]  ::: libriichi/src/state/getter.rs
[INFO] [stderr]  ::: libriichi/src/state/obs_repr.rs
[INFO] [stderr]  ::: libriichi/src/state/player_state.rs
[INFO] [stderr]   = cause: error: expected item, found `{`
[INFO] [stderr]              --> libriichi/src/dataset/gameplay.rs:80:1
[INFO] [stderr]               |
[INFO] [stderr]            80 | { unsafe #[pymethods]}
[INFO] [stderr]               | ^ expected item
[INFO] [stderr]               |
[INFO] [stderr]               = note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: expected item, found `{`
[INFO] [stderr]              --> libriichi/src/dataset/grp.rs:29:1
[INFO] [stderr]               |
[INFO] [stderr]            29 | { unsafe #[pymethods]}
[INFO] [stderr]               | ^ expected item
[INFO] [stderr]               |
[INFO] [stderr]               = note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: expected item, found `{`
[INFO] [stderr]               --> libriichi/src/stat.rs:444:1
[INFO] [stderr]                |
[INFO] [stderr]            444 | { unsafe #[pymethods]}
[INFO] [stderr]                | ^ expected item
[INFO] [stderr]                |
[INFO] [stderr]                = note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: expected item, found `{`
[INFO] [stderr]              --> libriichi/src/state/action.rs:43:1
[INFO] [stderr]               |
[INFO] [stderr]            43 | { unsafe #[pymethods]}
[INFO] [stderr]               | ^ expected item
[INFO] [stderr]               |
[INFO] [stderr]               = note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: expected item, found `{`
[INFO] [stderr]             --> libriichi/src/state/getter.rs:6:1
[INFO] [stderr]              |
[INFO] [stderr]            6 | { unsafe #[pymethods]}
[INFO] [stderr]              | ^ expected item
[INFO] [stderr]              |
[INFO] [stderr]              = note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: expected item, found `{`
[INFO] [stderr]               --> libriichi/src/state/player_state.rs:142:1
[INFO] [stderr]                |
[INFO] [stderr]            142 | { unsafe #[pymethods]}
[INFO] [stderr]                | ^ expected item
[INFO] [stderr]                |
[INFO] [stderr]                = note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error[E0689]: can't call method `exp` on ambiguous numeric type `{float}`
[INFO] [stderr]               --> libriichi/src/state/obs_repr.rs:228:71
[INFO] [stderr]                |
[INFO] [stderr]            228 |                     let v = (-0.2 * (max_kawa_len - 1 - turn) as f32).exp();
[INFO] [stderr]                |                                                                       ^^^
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error[E0689]: can't call method `exp` on ambiguous numeric type `{float}`
[INFO] [stderr]               --> libriichi/src/state/obs_repr.rs:266:79
[INFO] [stderr]                |
[INFO] [stderr]            266 | ...                   let v = (-0.2 * (max_kawa_len - 1 - turn) as f32).exp();
[INFO] [stderr]                |                                                                         ^^^
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:37:9
[INFO] [stderr]               |
[INFO] [stderr]            37 |         &self,
[INFO] [stderr]               |         ^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]               = note: `--force-warn unsafe-op-in-unsafe-fn` implied by `--force-warn rust-2024-compatibility`
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:38:21
[INFO] [stderr]               |
[INFO] [stderr]            38 |         challenger: PyObject,
[INFO] [stderr]               |                     ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:39:19
[INFO] [stderr]               |
[INFO] [stderr]            39 |         champion: PyObject,
[INFO] [stderr]               |                   ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:40:21
[INFO] [stderr]               |
[INFO] [stderr]            40 |         seed_start: (u64, u64),
[INFO] [stderr]               |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:41:21
[INFO] [stderr]               |
[INFO] [stderr]            41 |         seed_count: u64,
[INFO] [stderr]               |                     ^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:66:9
[INFO] [stderr]               |
[INFO] [stderr]            66 |         &self,
[INFO] [stderr]               |         ^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:67:17
[INFO] [stderr]               |
[INFO] [stderr]            67 |         engine: PyObject,
[INFO] [stderr]               |                 ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:68:21
[INFO] [stderr]               |
[INFO] [stderr]            68 |         seed_start: (u64, u64),
[INFO] [stderr]               |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:69:21
[INFO] [stderr]               |
[INFO] [stderr]            69 |         seed_count: u64,
[INFO] [stderr]               |                     ^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:91:9
[INFO] [stderr]               |
[INFO] [stderr]            91 |         &self,
[INFO] [stderr]               |         ^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:92:17
[INFO] [stderr]               |
[INFO] [stderr]            92 |         engine: PyObject,
[INFO] [stderr]               |                 ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:93:21
[INFO] [stderr]               |
[INFO] [stderr]            93 |         seed_start: (u64, u64),
[INFO] [stderr]               |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/one_vs_three.rs:94:21
[INFO] [stderr]               |
[INFO] [stderr]            94 |         seed_count: u64,
[INFO] [stderr]               |                     ^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:36:9
[INFO] [stderr]               |
[INFO] [stderr]            36 |         &self,
[INFO] [stderr]               |         ^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:37:21
[INFO] [stderr]               |
[INFO] [stderr]            37 |         challenger: PyObject,
[INFO] [stderr]               |                     ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:38:19
[INFO] [stderr]               |
[INFO] [stderr]            38 |         champion: PyObject,
[INFO] [stderr]               |                   ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:39:21
[INFO] [stderr]               |
[INFO] [stderr]            39 |         seed_start: (u64, u64),
[INFO] [stderr]               |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:40:21
[INFO] [stderr]               |
[INFO] [stderr]            40 |         seed_count: u64,
[INFO] [stderr]               |                     ^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:58:9
[INFO] [stderr]               |
[INFO] [stderr]            58 |         &self,
[INFO] [stderr]               |         ^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:59:17
[INFO] [stderr]               |
[INFO] [stderr]            59 |         engine: PyObject,
[INFO] [stderr]               |                 ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:60:21
[INFO] [stderr]               |
[INFO] [stderr]            60 |         seed_start: (u64, u64),
[INFO] [stderr]               |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:61:21
[INFO] [stderr]               |
[INFO] [stderr]            61 |         seed_count: u64,
[INFO] [stderr]               |                     ^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:76:9
[INFO] [stderr]               |
[INFO] [stderr]            76 |         &self,
[INFO] [stderr]               |         ^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:77:17
[INFO] [stderr]               |
[INFO] [stderr]            77 |         engine: PyObject,
[INFO] [stderr]               |                 ^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition
[INFO] [stdout]    --> libriichi/src/macros.rs:165:9
[INFO] [stdout]     |
[INFO] [stdout] 165 |     ($o:expr, $($s:tt)|* $(|)?) => {
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/macro-fragment-specifiers.html>
[INFO] [stdout]     = note: `--force-warn edition-2024-expr-fragment-specifier` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier
[INFO] [stdout]     |
[INFO] [stdout] 165 |     ($o:expr_2021, $($s:tt)|* $(|)?) => {
[INFO] [stdout]     |             +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/arena/board.rs:695:34
[INFO] [stdout]     |
[INFO] [stdout] 695 |                     .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                                  ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/arena/board.rs:695:30
[INFO] [stdout]     |
[INFO] [stdout] 695 |                     .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                              ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout]     = note: `--force-warn rust-2024-incompatible-pat` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 695 |                     .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/arena/board.rs:705:34
[INFO] [stdout]     |
[INFO] [stdout] 705 |                     .filter(|(_, &has_it)| has_it)
[INFO] [stdout]     |                                  ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/arena/board.rs:705:30
[INFO] [stdout]     |
[INFO] [stdout] 705 |                     .filter(|(_, &has_it)| has_it)
[INFO] [stdout]     |                              ^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 705 |                     .filter(|&(_, &has_it)| has_it)
[INFO] [stdout]     |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:78:21
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/arena/board.rs:730:34
[INFO] [stdout]     |
[INFO] [stdout] 730 |                     .filter(|(_, &c)| c)
[INFO] [stdout]     |                                  ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/arena/board.rs:730:30
[INFO] [stdout]     |
[INFO] [stdout] 730 |                     .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 730 |                     .filter(|&(_, &c)| c)
[INFO] [stdout]     |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: `--force-warn unsafe-op-in-unsafe-fn` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            78 |         seed_start: (u64, u64),
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:38:21
[INFO] [stdout]    |
[INFO] [stdout] 38 |         challenger: PyObject,
[INFO] [stdout]    |                     ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:39:19
[INFO] [stdout]    |
[INFO] [stdout] 39 |         champion: PyObject,
[INFO] [stdout]    |                   ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:40:21
[INFO] [stdout]    |
[INFO] [stdout] 40 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:41:21
[INFO] [stdout]    |
[INFO] [stdout] 41 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:67:17
[INFO] [stdout]    |
[INFO] [stdout] 67 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:68:21
[INFO] [stdout]    |
[INFO] [stdout] 68 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:69:21
[INFO] [stdout]    |
[INFO] [stdout] 69 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:79:21
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 91 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:92:17
[INFO] [stdout]    |
[INFO] [stdout] 92 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            79 |         seed_count: u64,
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:93:21
[INFO] [stdout]    |
[INFO] [stdout] 93 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |                     ^^^ call to unsafe function
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:94:21
[INFO] [stdout]    |
[INFO] [stdout] 94 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:37:21
[INFO] [stdout]    |
[INFO] [stdout] 37 |         challenger: PyObject,
[INFO] [stdout]    |                     ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:38:19
[INFO] [stdout]    |
[INFO] [stdout] 38 |         champion: PyObject,
[INFO] [stdout]    |                   ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:39:21
[INFO] [stdout]    |
[INFO] [stdout] 39 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:40:21
[INFO] [stdout]    |
[INFO] [stdout] 40 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:94:9
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:59:17
[INFO] [stdout]    |
[INFO] [stdout] 59 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:60:21
[INFO] [stdout]    |
[INFO] [stdout] 60 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            94 |         &self,
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:61:21
[INFO] [stdout]    |
[INFO] [stdout] 61 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |         ^^^^^ call to unsafe function
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:76:9
[INFO] [stdout]    |
[INFO] [stdout] 76 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:78:21
[INFO] [stdout]    |
[INFO] [stdout] 78 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:79:21
[INFO] [stdout]    |
[INFO] [stdout] 79 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:95:17
[INFO] [stdout]    |
[INFO] [stdout] 95 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:96:15
[INFO] [stdout]    |
[INFO] [stdout] 96 |         seed: (u64, u64),
[INFO] [stdout]    |               ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:95:17
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:97:16
[INFO] [stdout]    |
[INFO] [stdout] 97 |         split: usize,
[INFO] [stdout]    |                ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/consts.rs:20:33
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const fn obs_shape(version: u32) -> (usize, usize) {
[INFO] [stdout]    |                                 ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            95 |         engine: PyObject,
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/consts.rs:32:40
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub const fn oracle_obs_shape(version: u32) -> (usize, usize) {
[INFO] [stdout]    |                                        ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/gameplay.rs:94:18
[INFO] [stdout]    |
[INFO] [stdout] 94 |         version: u32,
[INFO] [stdout]    |                  ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:120:17
[INFO] [stdout]     |
[INFO] [stdout] 120 |     fn load_log(&self, raw_log: &str) -> Result<Vec<Gameplay>> {
[INFO] [stdout]     |                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:120:33
[INFO] [stdout]     |
[INFO] [stdout] 120 |     fn load_log(&self, raw_log: &str) -> Result<Vec<Gameplay>> {
[INFO] [stdout]     |                                 ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:133:29
[INFO] [stdout]     |
[INFO] [stdout] 133 |     fn load_gz_log_files_py(&self, gzip_filenames: Vec<String>) -> Result<Vec<Vec<Gameplay>>> {
[INFO] [stdout]     |                             ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:133:52
[INFO] [stdout]     |
[INFO] [stdout] 133 |     fn load_gz_log_files_py(&self, gzip_filenames: Vec<String>) -> Result<Vec<Vec<Gameplay>>> {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:137:17
[INFO] [stdout]     |
[INFO] [stdout] 137 |     fn __repr__(&self) -> String {
[INFO] [stdout]     |                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:80:1
[INFO] [stdout]     |
[INFO] [stdout]  80 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:193:22
[INFO] [stdout]     |
[INFO] [stdout] 193 |     fn take_obs<'py>(&mut self, py: Python<'py>) -> Vec<Bound<'py, PyArray2<f32>>> {
[INFO] [stdout]     |                      ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:96:15
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:199:32
[INFO] [stdout]     |
[INFO] [stdout] 199 |     fn take_invisible_obs<'py>(&mut self, py: Python<'py>) -> Vec<Bound<'py, PyArray2<f32>>> {
[INFO] [stdout]     |                                ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:205:21
[INFO] [stdout]     |
[INFO] [stdout] 205 |     fn take_actions(&mut self) -> Vec<i64> {
[INFO] [stdout]     |                     ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            96 |         seed: (u64, u64),
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:208:24
[INFO] [stdout]     |
[INFO] [stdout] 208 |     fn take_masks<'py>(&mut self, py: Python<'py>) -> Vec<Bound<'py, PyArray1<bool>>> {
[INFO] [stdout]     |                        ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |               ^^^^^^^^^^ call to unsafe function
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:214:22
[INFO] [stdout]     |
[INFO] [stdout] 214 |     fn take_at_kyoku(&mut self) -> Vec<u8> {
[INFO] [stdout]     |                      ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:217:19
[INFO] [stdout]     |
[INFO] [stdout] 217 |     fn take_dones(&mut self) -> Vec<bool> {
[INFO] [stdout]     |                   ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:220:25
[INFO] [stdout]     |
[INFO] [stdout] 220 |     fn take_apply_gamma(&mut self) -> Vec<bool> {
[INFO] [stdout]     |                         ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:223:22
[INFO] [stdout]     |
[INFO] [stdout] 223 |     fn take_at_turns(&mut self) -> Vec<u8> {
[INFO] [stdout]     |                      ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:226:22
[INFO] [stdout]     |
[INFO] [stdout] 226 |     fn take_shantens(&mut self) -> Vec<i8> {
[INFO] [stdout]     |                      ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:230:17
[INFO] [stdout]     |
[INFO] [stdout] 230 |     fn take_grp(&mut self) -> Grp {
[INFO] [stdout]     |                 ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:234:29
[INFO] [stdout]     |
[INFO] [stdout] 234 |     const fn take_player_id(&self) -> u8 {
[INFO] [stdout]     |                             ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]              --> libriichi/src/arena/two_vs_two.rs:97:16
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:32:26
[INFO] [stdout]    |
[INFO] [stdout] 32 |     fn load_log(raw_log: &str) -> Result<Self> {
[INFO] [stdout]    |                          ^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:43:45
[INFO] [stdout]    |
[INFO] [stdout] 43 |     fn load_gz_log_files_py(gzip_filenames: Vec<PyBackedStr>) -> Result<Vec<Self>> {
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            97 |         split: usize,
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:48:30
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn take_feature<'py>(&mut self, py: Python<'py>) -> Bound<'py, PyArray2<f64>> {
[INFO] [stdout]    |                              ^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |                ^^^^^ call to unsafe function
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:51:38
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub const fn take_rank_by_player(&self) -> [u8; 4] {
[INFO] [stdout]    |                                      ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:54:36
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub const fn take_final_scores(&self) -> [i32; 4] {
[INFO] [stdout]    |                                    ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:167:30
[INFO] [stdout]     |
[INFO] [stdout] 167 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:167:26
[INFO] [stdout]     |
[INFO] [stdout] 167 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                          ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 167 |                 .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:175:30
[INFO] [stdout]     |
[INFO] [stdout] 175 |                 .filter(|(_, &has_it)| has_it)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:175:26
[INFO] [stdout]     |
[INFO] [stdout] 175 |                 .filter(|(_, &has_it)| has_it)
[INFO] [stdout]     |                          ^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 175 |                 .filter(|&(_, &has_it)| has_it)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:200:30
[INFO] [stdout]     |
[INFO] [stdout] 200 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:200:26
[INFO] [stdout]     |
[INFO] [stdout] 200 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                          ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 200 |                 .filter(|&(_, &c)| c)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> libriichi/src/py_helper.rs:13:39
[INFO] [stdout]     |
[INFO] [stdout]  11 |     let name = m.name()?;
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `name` calls a custom destructor
[INFO] [stdout]     |         `name` will be dropped later as of Edition 2024
[INFO] [stdout]  12 |     let script = format!("import sys; sys.modules['{prefix}.{name}'] = {name}; del sys");
[INFO] [stdout]  13 |     py.run_bound(&script, None, Some(&super_mod.dict()))
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                       up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  14 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/pyo3-0.21.2/src/instance.rs:407:1
[INFO] [stdout]     |
[INFO] [stdout] 407 | impl<T> Drop for Bound<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `name` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/pyo3-0.21.2/src/instance.rs:407:1
[INFO] [stdout]     |
[INFO] [stdout] 407 | impl<T> Drop for Bound<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/mjai/bot.rs:20:20
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn new(engine: PyObject, player_id: u8) -> Result<Self> {
[INFO] [stdout]    |                    ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]              --> libriichi/src/consts.rs:20:33
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/mjai/bot.rs:20:41
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn new(engine: PyObject, player_id: u8) -> Result<Self> {
[INFO] [stdout]    |                                         ^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/mjai/bot.rs:39:17
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn react_py(&mut self, line: &str, can_act: bool, py: Python<'_>) -> Result<Option<String>> {
[INFO] [stdout]    |                 ^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            20 | pub const fn obs_shape(version: u32) -> (usize, usize) {
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/mjai/bot.rs:39:34
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn react_py(&mut self, line: &str, can_act: bool, py: Python<'_>) -> Result<Option<String>> {
[INFO] [stdout]    |                                  ^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |                                 ^^^ call to unsafe function
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:448:26
[INFO] [stdout]     |
[INFO] [stdout] 448 |     pub fn from_dir(dir: &str, player_name: &str, disable_progress_bar: bool) -> Result<Self> {
[INFO] [stdout]     |                          ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:448:45
[INFO] [stdout]     |
[INFO] [stdout] 448 |     pub fn from_dir(dir: &str, player_name: &str, disable_progress_bar: bool) -> Result<Self> {
[INFO] [stdout]     |                                             ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:500:26
[INFO] [stdout]     |
[INFO] [stdout] 500 |     pub fn from_log(log: &str, player_id: u8) -> Result<Self> {
[INFO] [stdout]     |                          ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:500:43
[INFO] [stdout]     |
[INFO] [stdout] 500 |     pub fn from_log(log: &str, player_id: u8) -> Result<Self> {
[INFO] [stdout]     |                                           ^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:511:27
[INFO] [stdout]     |
[INFO] [stdout] 511 |     pub const fn total_pt(&self, pts: [i64; 4]) -> i64 {
[INFO] [stdout]     |                           ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:511:39
[INFO] [stdout]     |
[INFO] [stdout] 511 |     pub const fn total_pt(&self, pts: [i64; 4]) -> i64 {
[INFO] [stdout]     |                                       ^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:516:19
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn avg_pt(&self, pts: [i64; 4]) -> f64 {
[INFO] [stdout]     |                   ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]              --> libriichi/src/consts.rs:32:40
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:516:31
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn avg_pt(&self, pts: [i64; 4]) -> f64 {
[INFO] [stdout]     |                               ^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:522:21
[INFO] [stdout]     |
[INFO] [stdout] 522 |     pub fn avg_rank(&self) -> f64 {
[INFO] [stdout]     |                     ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            32 | pub const fn oracle_obs_shape(version: u32) -> (usize, usize) {
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:528:24
[INFO] [stdout]     |
[INFO] [stdout] 528 |     pub fn rank_1_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |                                        ^^^ call to unsafe function
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:534:24
[INFO] [stdout]     |
[INFO] [stdout] 534 |     pub fn rank_2_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:540:24
[INFO] [stdout]     |
[INFO] [stdout] 540 |     pub fn rank_3_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:546:24
[INFO] [stdout]     |
[INFO] [stdout] 546 |     pub fn rank_4_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:552:22
[INFO] [stdout]     |
[INFO] [stdout] 552 |     pub fn tobi_rate(&self) -> f64 {
[INFO] [stdout]     |                      ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:559:31
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn avg_point_per_game(&self) -> f64 {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:565:32
[INFO] [stdout]     |
[INFO] [stdout] 565 |     pub fn avg_point_per_round(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            warning: relative drop order changing in Rust 2024
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:572:32
[INFO] [stdout]     |
[INFO] [stdout] 572 |     pub fn avg_point_per_agari(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               --> libriichi/src/py_helper.rs:13:39
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:578:36
[INFO] [stdout]     |
[INFO] [stdout] 578 |     pub fn avg_point_per_oya_agari(&self) -> f64 {
[INFO] [stdout]     |                                    ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:584:35
[INFO] [stdout]     |
[INFO] [stdout] 584 |     pub fn avg_point_per_ko_agari(&self) -> f64 {
[INFO] [stdout]     |                                   ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]             11 |     let name = m.name()?;
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:590:39
[INFO] [stdout]     |
[INFO] [stdout] 590 |     pub fn avg_point_per_riichi_agari(&self) -> f64 {
[INFO] [stdout]     |                                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |         ----
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:596:38
[INFO] [stdout]     |
[INFO] [stdout] 596 |     pub fn avg_point_per_fuuro_agari(&self) -> f64 {
[INFO] [stdout]     |                                      ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |         |
[INFO] [stderr]                |         `name` calls a custom destructor
[INFO] [stderr]                |         `name` will be dropped later as of Edition 2024
[INFO] [stderr]             12 |     let script = format!("import sys; sys.modules['{prefix}.{name}'] = {name}; del sys");
[INFO] [stderr]             13 |     py.run_bound(&script, None, Some(&super_mod.dict()))
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:602:37
[INFO] [stdout]     |
[INFO] [stdout] 602 |     pub fn avg_point_per_dama_agari(&self) -> f64 {
[INFO] [stdout]     |                                     ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]                |                                       ^^^^^^^^^^^^^^^^
[INFO] [stderr]                |                                       |
[INFO] [stderr]                |                                       this value will be stored in a temporary; let us call it `#1`
[INFO] [stderr]                |                                       up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stderr]             14 | }
[INFO] [stderr]                | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stderr]                |
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/pyo3-0.21.2/src/instance.rs:407:1
[INFO] [stderr]                |
[INFO] [stderr]            407 | impl<T> Drop for Bound<'_, T> {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `name` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/pyo3-0.21.2/src/instance.rs:407:1
[INFO] [stderr]                |
[INFO] [stderr]            407 | impl<T> Drop for Bound<'_, T> {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stderr]                = warning: this changes meaning in Rust 2024
[INFO] [stderr]                = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stderr]                = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/mjai/bot.rs:20:20
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:608:35
[INFO] [stdout]     |
[INFO] [stdout] 608 |     pub fn avg_point_per_ryukyoku(&self) -> f64 {
[INFO] [stdout]     |                                   ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stderr]            20 |     fn new(engine: PyObject, player_id: u8) -> Result<Self> {
[INFO] [stderr]               |                    ^^^^^^^^ call to unsafe function
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:615:26
[INFO] [stdout]     |
[INFO] [stdout] 615 |     pub fn avg_agari_jun(&self) -> f64 {
[INFO] [stdout]     |                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/mjai/bot.rs:20:41
[INFO] [stderr]               |
[INFO] [stderr]            20 |     fn new(engine: PyObject, player_id: u8) -> Result<Self> {
[INFO] [stderr]               |                                         ^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/mjai/bot.rs:39:17
[INFO] [stderr]               |
[INFO] [stderr]            39 |     fn react_py(&mut self, line: &str, can_act: bool, py: Python<'_>) -> Result<Option<String>> {
[INFO] [stderr]               |                 ^^^^^^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stderr]              --> libriichi/src/mjai/bot.rs:39:34
[INFO] [stderr]               |
[INFO] [stderr]            39 |     fn react_py(&mut self, line: &str, can_act: bool, py: Python<'_>) -> Result<Option<String>> {
[INFO] [stderr]               |                                  ^^^^ call to unsafe function
[INFO] [stderr]               |
[INFO] [stderr]               = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr]               = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: aborting due to 8 previous errors; 37 warnings emitted
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            Some errors have detailed explanations: E0133, E0689.
[INFO] [stderr]            
[INFO] [stderr]            For more information about an error, try `rustc --explain E0133`.
[INFO] [stderr] help: to report this as a bug, open an issue at https://github.com/rust-lang/rust/issues, quoting the full output of this command
[INFO] [stderr] help: to possibly apply more fixes, pass in the `--broken-code` flag
[INFO] [stderr] note: original diagnostics will follow:
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:621:33
[INFO] [stdout]     |
[INFO] [stdout] 621 |     pub fn avg_riichi_agari_jun(&self) -> f64 {
[INFO] [stdout]     |                                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:627:32
[INFO] [stdout]     |
[INFO] [stdout] 627 |     pub fn avg_fuuro_agari_jun(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:633:31
[INFO] [stdout]     |
[INFO] [stdout] 633 |     pub fn avg_dama_agari_jun(&self) -> f64 {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:640:33
[INFO] [stdout]     |
[INFO] [stdout] 640 |     pub fn avg_point_per_houjuu(&self) -> f64 {
[INFO] [stdout]     |                                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:646:40
[INFO] [stdout]     |
[INFO] [stdout] 646 |     pub fn avg_point_per_houjuu_to_oya(&self) -> f64 {
[INFO] [stdout]     |                                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:652:39
[INFO] [stdout]     |
[INFO] [stdout] 652 |     pub fn avg_point_per_houjuu_to_ko(&self) -> f64 {
[INFO] [stdout]     |                                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:658:27
[INFO] [stdout]     |
[INFO] [stdout] 658 |     pub fn avg_houjuu_jun(&self) -> f64 {
[INFO] [stdout]     |                           ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:665:23
[INFO] [stdout]     |
[INFO] [stdout] 665 |     pub fn agari_rate(&self) -> f64 {
[INFO] [stdout]     |                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:671:24
[INFO] [stdout]     |
[INFO] [stdout] 671 |     pub fn houjuu_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:677:24
[INFO] [stdout]     |
[INFO] [stdout] 677 |     pub fn riichi_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:683:23
[INFO] [stdout]     |
[INFO] [stdout] 683 |     pub fn fuuro_rate(&self) -> f64 {
[INFO] [stdout]     |                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:689:26
[INFO] [stdout]     |
[INFO] [stdout] 689 |     pub fn ryukyoku_rate(&self) -> f64 {
[INFO] [stdout]     |                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:696:36
[INFO] [stdout]     |
[INFO] [stdout] 696 |     pub fn agari_rate_after_riichi(&self) -> f64 {
[INFO] [stdout]     |                                    ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:702:37
[INFO] [stdout]     |
[INFO] [stdout] 702 |     pub fn houjuu_rate_after_riichi(&self) -> f64 {
[INFO] [stdout]     |                                     ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:708:32
[INFO] [stdout]     |
[INFO] [stdout] 708 |     pub fn chasing_riichi_rate(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:714:31
[INFO] [stdout]     |
[INFO] [stdout] 714 |     pub fn riichi_chased_rate(&self) -> f64 {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:720:27
[INFO] [stdout]     |
[INFO] [stdout] 720 |     pub fn avg_riichi_jun(&self) -> f64 {
[INFO] [stdout]     |                           ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:726:29
[INFO] [stdout]     |
[INFO] [stdout] 726 |     pub fn avg_riichi_point(&self) -> f64 {
[INFO] [stdout]     |                             ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:733:30
[INFO] [stdout]     |
[INFO] [stdout] 733 |     pub fn agari_rate_as_oya(&self) -> f64 {
[INFO] [stdout]     |                              ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:739:30
[INFO] [stdout]     |
[INFO] [stdout] 739 |     pub fn agari_as_oya_rate(&self) -> f64 {
[INFO] [stdout]     |                              ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:745:31
[INFO] [stdout]     |
[INFO] [stdout] 745 |     pub fn houjuu_to_oya_rate(&self) -> f64 {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:752:26
[INFO] [stdout]     |
[INFO] [stdout] 752 |     pub fn avg_fuuro_num(&self) -> f64 {
[INFO] [stdout]     |                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:758:35
[INFO] [stdout]     |
[INFO] [stdout] 758 |     pub fn agari_rate_after_fuuro(&self) -> f64 {
[INFO] [stdout]     |                                   ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:764:36
[INFO] [stdout]     |
[INFO] [stdout] 764 |     pub fn houjuu_rate_after_fuuro(&self) -> f64 {
[INFO] [stdout]     |                                    ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:770:28
[INFO] [stdout]     |
[INFO] [stdout] 770 |     pub fn avg_fuuro_point(&self) -> f64 {
[INFO] [stdout]     |                            ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:777:25
[INFO] [stdout]     |
[INFO] [stdout] 777 |     pub fn yakuman_rate(&self) -> f64 {
[INFO] [stdout]     |                         ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:783:32
[INFO] [stdout]     |
[INFO] [stdout] 783 |     pub fn nagashi_mangan_rate(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:787:16
[INFO] [stdout]     |
[INFO] [stdout] 787 |     fn __str__(&self) -> String {
[INFO] [stdout]     |                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:790:17
[INFO] [stdout]     |
[INFO] [stdout] 790 |     fn __repr__(&self) -> String {
[INFO] [stdout]     |                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:48:26
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub const fn can_chi(&self) -> bool {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:55:26
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub const fn can_kan(&self) -> bool {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:62:28
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub const fn can_agari(&self) -> bool {
[INFO] [stdout]    |                            ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:69:27
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub const fn can_pass(&self) -> bool {
[INFO] [stdout]    |                           ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:76:26
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub const fn can_act(&self) -> bool {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:86:17
[INFO] [stdout]    |
[INFO] [stdout] 86 |     fn __repr__(&self) -> String {
[INFO] [stdout]    |                 ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub const fn player_id(&self) -> u8 {
[INFO] [stdout]    |                            ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:17:24
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub const fn kyoku(&self) -> u8 {
[INFO] [stdout]    |                        ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:23:24
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub const fn honba(&self) -> u8 {
[INFO] [stdout]    |                        ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:29:26
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub const fn kyotaku(&self) -> u8 {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:35:25
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub const fn is_oya(&self) -> bool {
[INFO] [stdout]    |                         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:42:24
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub const fn tehai(&self) -> [u8; 34] {
[INFO] [stdout]    |                        ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:48:31
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub const fn akas_in_hand(&self) -> [bool; 3] {
[INFO] [stdout]    |                               ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:55:17
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn chis(&self) -> &[u8] {
[INFO] [stdout]    |                 ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:61:17
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn pons(&self) -> &[u8] {
[INFO] [stdout]    |                 ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:67:20
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub fn minkans(&self) -> &[u8] {
[INFO] [stdout]    |                    ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:73:19
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn ankans(&self) -> &[u8] {
[INFO] [stdout]    |                   ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:80:26
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub const fn at_turn(&self) -> u8 {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:86:26
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub const fn shanten(&self) -> i8 {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:92:24
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub const fn waits(&self) -> [bool; 34] {
[INFO] [stdout]    |                        ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:98:27
[INFO] [stdout]    |
[INFO] [stdout] 98 |     fn last_self_tsumo_py(&self) -> Option<String> {
[INFO] [stdout]    |                           ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:103:26
[INFO] [stdout]     |
[INFO] [stdout] 103 |     fn last_kawa_tile_py(&self) -> Option<String> {
[INFO] [stdout]     |                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:110:28
[INFO] [stdout]     |
[INFO] [stdout] 110 |     pub const fn last_cans(&self) -> ActionCandidate {
[INFO] [stdout]     |                            ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:116:28
[INFO] [stdout]     |
[INFO] [stdout] 116 |     fn ankan_candidates_py(&self) -> Vec<String> {
[INFO] [stdout]     |                            ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:124:28
[INFO] [stdout]     |
[INFO] [stdout] 124 |     fn kakan_candidates_py(&self) -> Vec<String> {
[INFO] [stdout]     |                            ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:134:31
[INFO] [stdout]     |
[INFO] [stdout] 134 |     pub const fn can_w_riichi(&self) -> bool {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:140:39
[INFO] [stdout]     |
[INFO] [stdout] 140 |     pub const fn self_riichi_declared(&self) -> bool {
[INFO] [stdout]     |                                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:146:39
[INFO] [stdout]     |
[INFO] [stdout] 146 |     pub const fn self_riichi_accepted(&self) -> bool {
[INFO] [stdout]     |                                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:153:29
[INFO] [stdout]     |
[INFO] [stdout] 153 |     pub const fn at_furiten(&self) -> bool {
[INFO] [stdout]     |                             ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:134:26
[INFO] [stdout]     |
[INFO] [stdout] 134 |             .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                          ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:134:22
[INFO] [stdout]     |
[INFO] [stdout] 134 |             .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                      ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 134 |             .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:372:26
[INFO] [stdout]     |
[INFO] [stdout] 372 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                          ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:372:22
[INFO] [stdout]     |
[INFO] [stdout] 372 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                      ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 372 |             .filter(|&(_, &b)| b)
[INFO] [stdout]     |                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:378:26
[INFO] [stdout]     |
[INFO] [stdout] 378 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                          ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:378:22
[INFO] [stdout]     |
[INFO] [stdout] 378 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                      ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 378 |             .filter(|&(_, &b)| b)
[INFO] [stdout]     |                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:386:26
[INFO] [stdout]     |
[INFO] [stdout] 386 |             .filter(|(_, &c)| c)
[INFO] [stdout]     |                          ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:386:22
[INFO] [stdout]     |
[INFO] [stdout] 386 |             .filter(|(_, &c)| c)
[INFO] [stdout]     |                      ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 386 |             .filter(|&(_, &c)| c)
[INFO] [stdout]     |                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:436:30
[INFO] [stdout]     |
[INFO] [stdout] 436 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:436:26
[INFO] [stdout]     |
[INFO] [stdout] 436 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                          ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 436 |                 .filter(|&(_, &c)| c)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:454:30
[INFO] [stdout]     |
[INFO] [stdout] 454 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:454:26
[INFO] [stdout]     |
[INFO] [stdout] 454 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                          ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 454 |                 .filter(|&(_, &c)| c)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:460:30
[INFO] [stdout]     |
[INFO] [stdout] 460 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:460:26
[INFO] [stdout]     |
[INFO] [stdout] 460 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                          ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 460 |                 .filter(|&(_, &c)| c)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:468:34
[INFO] [stdout]     |
[INFO] [stdout] 468 |                     .filter(|(_, &c)| c)
[INFO] [stdout]     |                                  ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:468:30
[INFO] [stdout]     |
[INFO] [stdout] 468 |                     .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 468 |                     .filter(|&(_, &c)| c)
[INFO] [stdout]     |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:781:9
[INFO] [stdout]     |
[INFO] [stdout] 781 |         &self,
[INFO] [stdout]     |         ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:782:18
[INFO] [stdout]     |
[INFO] [stdout] 782 |         version: u32,
[INFO] [stdout]     |                  ^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:783:24
[INFO] [stdout]     |
[INFO] [stdout] 783 |         at_kan_select: bool,
[INFO] [stdout]     |                        ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:178:26
[INFO] [stdout]     |
[INFO] [stdout] 178 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                          ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:178:22
[INFO] [stdout]     |
[INFO] [stdout] 178 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                      ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 178 |             .filter(|&(_, &b)| b)
[INFO] [stdout]     |                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:147:27
[INFO] [stdout]     |
[INFO] [stdout] 147 |     pub fn new(player_id: u8) -> Self {
[INFO] [stdout]     |                           ^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:157:31
[INFO] [stdout]     |
[INFO] [stdout] 157 |     pub(super) fn update_json(&mut self, mjai_json: &str) -> Result<ActionCandidate> {
[INFO] [stdout]     |                               ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:157:53
[INFO] [stdout]     |
[INFO] [stdout] 157 |     pub(super) fn update_json(&mut self, mjai_json: &str) -> Result<ActionCandidate> {
[INFO] [stdout]     |                                                     ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:164:42
[INFO] [stdout]     |
[INFO] [stdout] 164 |     pub(super) fn validate_reaction_json(&self, mjai_json: &str) -> Result<()> {
[INFO] [stdout]     |                                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:164:60
[INFO] [stdout]     |
[INFO] [stdout] 164 |     pub(super) fn validate_reaction_json(&self, mjai_json: &str) -> Result<()> {
[INFO] [stdout]     |                                                            ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:173:23
[INFO] [stdout]     |
[INFO] [stdout] 173 |     pub fn brief_info(&self) -> String {
[INFO] [stdout]     |                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:142:1
[INFO] [stdout]     |
[INFO] [stdout] 142 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/state/update.rs:290:30
[INFO] [stdout]     |
[INFO] [stdout] 290 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/update.rs:290:26
[INFO] [stdout]     |
[INFO] [stdout] 290 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                          ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 290 |                 .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/algo/agari.rs:816:22
[INFO] [stdout]     |
[INFO] [stdout] 816 |         .filter(|(_, &c)| c > 0)
[INFO] [stdout]     |                      ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/algo/agari.rs:816:18
[INFO] [stdout]     |
[INFO] [stdout] 816 |         .filter(|(_, &c)| c > 0)
[INFO] [stdout]     |                  ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 816 |         .filter(|&(_, &c)| c > 0)
[INFO] [stdout]     |                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]   --> libriichi/src/hand.rs:72:22
[INFO] [stdout]    |
[INFO] [stdout] 72 |         .filter(|(_, &count)| count > 0)
[INFO] [stdout]    |                      ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> libriichi/src/hand.rs:72:18
[INFO] [stdout]    |
[INFO] [stdout] 72 |         .filter(|(_, &count)| count > 0)
[INFO] [stdout]    |                  ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] 72 |         .filter(|&(_, &count)| count > 0)
[INFO] [stdout]    |                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]   --> libriichi/src/hand.rs:89:22
[INFO] [stdout]    |
[INFO] [stdout] 89 |         .filter(|(_, &count)| count > 0)
[INFO] [stdout]    |                      ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> libriichi/src/hand.rs:89:18
[INFO] [stdout]    |
[INFO] [stdout] 89 |         .filter(|(_, &count)| count > 0)
[INFO] [stdout]    |                  ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] 89 |         .filter(|&(_, &count)| count > 0)
[INFO] [stdout]    |                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/hand.rs:107:30
[INFO] [stdout]     |
[INFO] [stdout] 107 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/hand.rs:107:26
[INFO] [stdout]     |
[INFO] [stdout] 107 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                          ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 107 |                 .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly dereference within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> libriichi/src/hand.rs:137:22
[INFO] [stdout]     |
[INFO] [stdout] 137 |         .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                      ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/hand.rs:137:18
[INFO] [stdout]     |
[INFO] [stdout] 137 |         .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                  ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 137 |         .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:565:16
[INFO] [stdout]     |
[INFO] [stdout] 565 |             if let Ok(SinglePlayerTables { max_ev_table }) = state.single_player_tables() {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^----------------------------
[INFO] [stdout]     |                                                              |
[INFO] [stdout]     |                                                              this value has a significant drop implementation which may observe a major change in drop order and requires your discretion
[INFO] [stdout]     |
[INFO] [stdout] note: value invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.86/src/error.rs:600:1
[INFO] [stdout]     |
[INFO] [stdout] 600 | impl Drop for Error {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: the value is now dropped here in Edition 2024
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:612:13
[INFO] [stdout]     |
[INFO] [stdout] 612 |             } else {
[INFO] [stdout]     |             ^
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-if-let-scope.html>
[INFO] [stdout]     = note: `--force-warn if-let-rescope` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021
[INFO] [stdout]     |
[INFO] [stdout] 565 ~             match state.single_player_tables() { Ok(SinglePlayerTables { max_ev_table }) => {
[INFO] [stdout] 566 |                 // Get the max EV from the table that maximizes EV, which should
[INFO] [stdout] ...
[INFO] [stdout] 611 |                 self.encode_sp_table(max_ev_table, cans.can_discard, ev_scale);
[INFO] [stdout] 612 ~             } _ => {
[INFO] [stdout] 613 |                 // Use the minimal tsumo agari point as the max EV. It is
[INFO] [stdout] ...
[INFO] [stdout] 622 |                 self.idx += 2 * 34 + 2 + 3 * MAX_NUM_TURNS;
[INFO] [stdout] 623 ~             }}
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] [stderr]    Migrating libriichi/src/bin/stat.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating libriichi/benches/bench.rs from 2021 edition to 2024
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 28.97s
[INFO] [stderr] crater-edition-check: libriichi v0.1.0 (/opt/rustwide/workdir/libriichi) updating edition from 2021 to 2024
[INFO] [stderr] crater-edition-check: exe-wrapper v0.1.0 (/opt/rustwide/workdir/exe-wrapper) updating edition from 2021 to 2024
[INFO] [stderr]    Compiling libriichi v0.1.0 (/opt/rustwide/workdir/libriichi)
[INFO] [stderr]     Checking exe-wrapper v0.1.0 (/opt/rustwide/workdir/exe-wrapper)
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/arena/board.rs:695:34
[INFO] [stdout]     |
[INFO] [stdout] 695 |                     .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                                  ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/arena/board.rs:695:30
[INFO] [stdout]     |
[INFO] [stdout] 695 |                     .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                              ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 695 |                     .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/arena/board.rs:705:34
[INFO] [stdout]     |
[INFO] [stdout] 705 |                     .filter(|(_, &has_it)| has_it)
[INFO] [stdout]     |                                  ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/arena/board.rs:705:30
[INFO] [stdout]     |
[INFO] [stdout] 705 |                     .filter(|(_, &has_it)| has_it)
[INFO] [stdout]     |                              ^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 705 |                     .filter(|&(_, &has_it)| has_it)
[INFO] [stdout]     |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/arena/board.rs:730:34
[INFO] [stdout]     |
[INFO] [stdout] 730 |                     .filter(|(_, &c)| c)
[INFO] [stdout]     |                                  ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/arena/board.rs:730:30
[INFO] [stdout]     |
[INFO] [stdout] 730 |                     .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 730 |                     .filter(|&(_, &c)| c)
[INFO] [stdout]     |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:38:21
[INFO] [stdout]    |
[INFO] [stdout] 38 |         challenger: PyObject,
[INFO] [stdout]    |                     ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:39:19
[INFO] [stdout]    |
[INFO] [stdout] 39 |         champion: PyObject,
[INFO] [stdout]    |                   ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:40:21
[INFO] [stdout]    |
[INFO] [stdout] 40 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:41:21
[INFO] [stdout]    |
[INFO] [stdout] 41 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:67:17
[INFO] [stdout]    |
[INFO] [stdout] 67 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:68:21
[INFO] [stdout]    |
[INFO] [stdout] 68 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:69:21
[INFO] [stdout]    |
[INFO] [stdout] 69 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 91 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:92:17
[INFO] [stdout]    |
[INFO] [stdout] 92 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:93:21
[INFO] [stdout]    |
[INFO] [stdout] 93 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:94:21
[INFO] [stdout]    |
[INFO] [stdout] 94 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:37:21
[INFO] [stdout]    |
[INFO] [stdout] 37 |         challenger: PyObject,
[INFO] [stdout]    |                     ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:38:19
[INFO] [stdout]    |
[INFO] [stdout] 38 |         champion: PyObject,
[INFO] [stdout]    |                   ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:39:21
[INFO] [stdout]    |
[INFO] [stdout] 39 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:40:21
[INFO] [stdout]    |
[INFO] [stdout] 40 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:59:17
[INFO] [stdout]    |
[INFO] [stdout] 59 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:60:21
[INFO] [stdout]    |
[INFO] [stdout] 60 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:61:21
[INFO] [stdout]    |
[INFO] [stdout] 61 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:76:9
[INFO] [stdout]    |
[INFO] [stdout] 76 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:78:21
[INFO] [stdout]    |
[INFO] [stdout] 78 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:79:21
[INFO] [stdout]    |
[INFO] [stdout] 79 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:95:17
[INFO] [stdout]    |
[INFO] [stdout] 95 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:96:15
[INFO] [stdout]    |
[INFO] [stdout] 96 |         seed: (u64, u64),
[INFO] [stdout]    |               ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:97:16
[INFO] [stdout]    |
[INFO] [stdout] 97 |         split: usize,
[INFO] [stdout]    |                ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/consts.rs:20:33
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const fn obs_shape(version: u32) -> (usize, usize) {
[INFO] [stdout]    |                                 ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/consts.rs:32:40
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub const fn oracle_obs_shape(version: u32) -> (usize, usize) {
[INFO] [stdout]    |                                        ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/arena/board.rs:695:34
[INFO] [stdout]     |
[INFO] [stdout] 695 |                     .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                                  ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/arena/board.rs:695:30
[INFO] [stdout]     |
[INFO] [stdout] 695 |                     .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                              ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 695 |                     .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/arena/board.rs:705:34
[INFO] [stdout]     |
[INFO] [stdout] 705 |                     .filter(|(_, &has_it)| has_it)
[INFO] [stdout]     |                                  ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/arena/board.rs:705:30
[INFO] [stdout]     |
[INFO] [stdout] 705 |                     .filter(|(_, &has_it)| has_it)
[INFO] [stdout]     |                              ^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 705 |                     .filter(|&(_, &has_it)| has_it)
[INFO] [stdout]     |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/arena/board.rs:730:34
[INFO] [stdout]     |
[INFO] [stdout] 730 |                     .filter(|(_, &c)| c)
[INFO] [stdout]     |                                  ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/arena/board.rs:730:30
[INFO] [stdout]     |
[INFO] [stdout] 730 |                     .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 730 |                     .filter(|&(_, &c)| c)
[INFO] [stdout]     |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/gameplay.rs:94:18
[INFO] [stdout]    |
[INFO] [stdout] 94 |         version: u32,
[INFO] [stdout]    |                  ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:120:17
[INFO] [stdout]     |
[INFO] [stdout] 120 |     fn load_log(&self, raw_log: &str) -> Result<Vec<Gameplay>> {
[INFO] [stdout]     |                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:120:33
[INFO] [stdout]     |
[INFO] [stdout] 120 |     fn load_log(&self, raw_log: &str) -> Result<Vec<Gameplay>> {
[INFO] [stdout]     |                                 ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:133:29
[INFO] [stdout]     |
[INFO] [stdout] 133 |     fn load_gz_log_files_py(&self, gzip_filenames: Vec<String>) -> Result<Vec<Vec<Gameplay>>> {
[INFO] [stdout]     |                             ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:133:52
[INFO] [stdout]     |
[INFO] [stdout] 133 |     fn load_gz_log_files_py(&self, gzip_filenames: Vec<String>) -> Result<Vec<Vec<Gameplay>>> {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:137:17
[INFO] [stdout]     |
[INFO] [stdout] 137 |     fn __repr__(&self) -> String {
[INFO] [stdout]     |                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:80:1
[INFO] [stdout]     |
[INFO] [stdout]  80 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:193:22
[INFO] [stdout]     |
[INFO] [stdout] 193 |     fn take_obs<'py>(&mut self, py: Python<'py>) -> Vec<Bound<'py, PyArray2<f32>>> {
[INFO] [stdout]     |                      ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:199:32
[INFO] [stdout]     |
[INFO] [stdout] 199 |     fn take_invisible_obs<'py>(&mut self, py: Python<'py>) -> Vec<Bound<'py, PyArray2<f32>>> {
[INFO] [stdout]     |                                ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:205:21
[INFO] [stdout]     |
[INFO] [stdout] 205 |     fn take_actions(&mut self) -> Vec<i64> {
[INFO] [stdout]     |                     ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:208:24
[INFO] [stdout]     |
[INFO] [stdout] 208 |     fn take_masks<'py>(&mut self, py: Python<'py>) -> Vec<Bound<'py, PyArray1<bool>>> {
[INFO] [stdout]     |                        ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:214:22
[INFO] [stdout]     |
[INFO] [stdout] 214 |     fn take_at_kyoku(&mut self) -> Vec<u8> {
[INFO] [stdout]     |                      ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:217:19
[INFO] [stdout]     |
[INFO] [stdout] 217 |     fn take_dones(&mut self) -> Vec<bool> {
[INFO] [stdout]     |                   ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:220:25
[INFO] [stdout]     |
[INFO] [stdout] 220 |     fn take_apply_gamma(&mut self) -> Vec<bool> {
[INFO] [stdout]     |                         ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:223:22
[INFO] [stdout]     |
[INFO] [stdout] 223 |     fn take_at_turns(&mut self) -> Vec<u8> {
[INFO] [stdout]     |                      ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:226:22
[INFO] [stdout]     |
[INFO] [stdout] 226 |     fn take_shantens(&mut self) -> Vec<i8> {
[INFO] [stdout]     |                      ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:230:17
[INFO] [stdout]     |
[INFO] [stdout] 230 |     fn take_grp(&mut self) -> Grp {
[INFO] [stdout]     |                 ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:234:29
[INFO] [stdout]     |
[INFO] [stdout] 234 |     const fn take_player_id(&self) -> u8 {
[INFO] [stdout]     |                             ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:32:26
[INFO] [stdout]    |
[INFO] [stdout] 32 |     fn load_log(raw_log: &str) -> Result<Self> {
[INFO] [stdout]    |                          ^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:43:45
[INFO] [stdout]    |
[INFO] [stdout] 43 |     fn load_gz_log_files_py(gzip_filenames: Vec<PyBackedStr>) -> Result<Vec<Self>> {
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:48:30
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn take_feature<'py>(&mut self, py: Python<'py>) -> Bound<'py, PyArray2<f64>> {
[INFO] [stdout]    |                              ^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:38:21
[INFO] [stdout]    |
[INFO] [stdout] 38 |         challenger: PyObject,
[INFO] [stdout]    |                     ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:39:19
[INFO] [stdout]    |
[INFO] [stdout] 39 |         champion: PyObject,
[INFO] [stdout]    |                   ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:40:21
[INFO] [stdout]    |
[INFO] [stdout] 40 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:41:21
[INFO] [stdout]    |
[INFO] [stdout] 41 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:51:38
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub const fn take_rank_by_player(&self) -> [u8; 4] {
[INFO] [stdout]    |                                      ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:54:36
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub const fn take_final_scores(&self) -> [i32; 4] {
[INFO] [stdout]    |                                    ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:67:17
[INFO] [stdout]    |
[INFO] [stdout] 67 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:68:21
[INFO] [stdout]    |
[INFO] [stdout] 68 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:69:21
[INFO] [stdout]    |
[INFO] [stdout] 69 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 91 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:92:17
[INFO] [stdout]    |
[INFO] [stdout] 92 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:93:21
[INFO] [stdout]    |
[INFO] [stdout] 93 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/one_vs_three.rs:94:21
[INFO] [stdout]    |
[INFO] [stdout] 94 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:167:30
[INFO] [stdout]     |
[INFO] [stdout] 167 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:167:26
[INFO] [stdout]     |
[INFO] [stdout] 167 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                          ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 167 |                 .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:175:30
[INFO] [stdout]     |
[INFO] [stdout] 175 |                 .filter(|(_, &has_it)| has_it)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:175:26
[INFO] [stdout]     |
[INFO] [stdout] 175 |                 .filter(|(_, &has_it)| has_it)
[INFO] [stdout]     |                          ^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 175 |                 .filter(|&(_, &has_it)| has_it)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:200:30
[INFO] [stdout]     |
[INFO] [stdout] 200 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:200:26
[INFO] [stdout]     |
[INFO] [stdout] 200 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                          ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 200 |                 .filter(|&(_, &c)| c)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/mjai/bot.rs:20:20
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn new(engine: PyObject, player_id: u8) -> Result<Self> {
[INFO] [stdout]    |                    ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/mjai/bot.rs:20:41
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn new(engine: PyObject, player_id: u8) -> Result<Self> {
[INFO] [stdout]    |                                         ^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/mjai/bot.rs:39:17
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn react_py(&mut self, line: &str, can_act: bool, py: Python<'_>) -> Result<Option<String>> {
[INFO] [stdout]    |                 ^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/mjai/bot.rs:39:34
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn react_py(&mut self, line: &str, can_act: bool, py: Python<'_>) -> Result<Option<String>> {
[INFO] [stdout]    |                                  ^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:37:21
[INFO] [stdout]    |
[INFO] [stdout] 37 |         challenger: PyObject,
[INFO] [stdout]    |                     ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:38:19
[INFO] [stdout]    |
[INFO] [stdout] 38 |         champion: PyObject,
[INFO] [stdout]    |                   ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:39:21
[INFO] [stdout]    |
[INFO] [stdout] 39 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:40:21
[INFO] [stdout]    |
[INFO] [stdout] 40 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:59:17
[INFO] [stdout]    |
[INFO] [stdout] 59 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:60:21
[INFO] [stdout]    |
[INFO] [stdout] 60 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:61:21
[INFO] [stdout]    |
[INFO] [stdout] 61 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:76:9
[INFO] [stdout]    |
[INFO] [stdout] 76 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:78:21
[INFO] [stdout]    |
[INFO] [stdout] 78 |         seed_start: (u64, u64),
[INFO] [stdout]    |                     ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:79:21
[INFO] [stdout]    |
[INFO] [stdout] 79 |         seed_count: u64,
[INFO] [stdout]    |                     ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |         &self,
[INFO] [stdout]    |         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:95:17
[INFO] [stdout]    |
[INFO] [stdout] 95 |         engine: PyObject,
[INFO] [stdout]    |                 ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:96:15
[INFO] [stdout]    |
[INFO] [stdout] 96 |         seed: (u64, u64),
[INFO] [stdout]    |               ^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/arena/two_vs_two.rs:97:16
[INFO] [stdout]    |
[INFO] [stdout] 97 |         split: usize,
[INFO] [stdout]    |                ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/consts.rs:20:33
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const fn obs_shape(version: u32) -> (usize, usize) {
[INFO] [stdout]    |                                 ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/consts.rs:32:40
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub const fn oracle_obs_shape(version: u32) -> (usize, usize) {
[INFO] [stdout]    |                                        ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/gameplay.rs:94:18
[INFO] [stdout]    |
[INFO] [stdout] 94 |         version: u32,
[INFO] [stdout]    |                  ^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:120:17
[INFO] [stdout]     |
[INFO] [stdout] 120 |     fn load_log(&self, raw_log: &str) -> Result<Vec<Gameplay>> {
[INFO] [stdout]     |                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:120:33
[INFO] [stdout]     |
[INFO] [stdout] 120 |     fn load_log(&self, raw_log: &str) -> Result<Vec<Gameplay>> {
[INFO] [stdout]     |                                 ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:133:29
[INFO] [stdout]     |
[INFO] [stdout] 133 |     fn load_gz_log_files_py(&self, gzip_filenames: Vec<String>) -> Result<Vec<Vec<Gameplay>>> {
[INFO] [stdout]     |                             ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:133:52
[INFO] [stdout]     |
[INFO] [stdout] 133 |     fn load_gz_log_files_py(&self, gzip_filenames: Vec<String>) -> Result<Vec<Vec<Gameplay>>> {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:137:17
[INFO] [stdout]     |
[INFO] [stdout] 137 |     fn __repr__(&self) -> String {
[INFO] [stdout]     |                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:80:1
[INFO] [stdout]     |
[INFO] [stdout]  80 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:193:22
[INFO] [stdout]     |
[INFO] [stdout] 193 |     fn take_obs<'py>(&mut self, py: Python<'py>) -> Vec<Bound<'py, PyArray2<f32>>> {
[INFO] [stdout]     |                      ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:199:32
[INFO] [stdout]     |
[INFO] [stdout] 199 |     fn take_invisible_obs<'py>(&mut self, py: Python<'py>) -> Vec<Bound<'py, PyArray2<f32>>> {
[INFO] [stdout]     |                                ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:205:21
[INFO] [stdout]     |
[INFO] [stdout] 205 |     fn take_actions(&mut self) -> Vec<i64> {
[INFO] [stdout]     |                     ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:208:24
[INFO] [stdout]     |
[INFO] [stdout] 208 |     fn take_masks<'py>(&mut self, py: Python<'py>) -> Vec<Bound<'py, PyArray1<bool>>> {
[INFO] [stdout]     |                        ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:214:22
[INFO] [stdout]     |
[INFO] [stdout] 214 |     fn take_at_kyoku(&mut self) -> Vec<u8> {
[INFO] [stdout]     |                      ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:217:19
[INFO] [stdout]     |
[INFO] [stdout] 217 |     fn take_dones(&mut self) -> Vec<bool> {
[INFO] [stdout]     |                   ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:220:25
[INFO] [stdout]     |
[INFO] [stdout] 220 |     fn take_apply_gamma(&mut self) -> Vec<bool> {
[INFO] [stdout]     |                         ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:223:22
[INFO] [stdout]     |
[INFO] [stdout] 223 |     fn take_at_turns(&mut self) -> Vec<u8> {
[INFO] [stdout]     |                      ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:226:22
[INFO] [stdout]     |
[INFO] [stdout] 226 |     fn take_shantens(&mut self) -> Vec<i8> {
[INFO] [stdout]     |                      ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:230:17
[INFO] [stdout]     |
[INFO] [stdout] 230 |     fn take_grp(&mut self) -> Grp {
[INFO] [stdout]     |                 ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:234:29
[INFO] [stdout]     |
[INFO] [stdout] 234 |     const fn take_player_id(&self) -> u8 {
[INFO] [stdout]     |                             ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/dataset/gameplay.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:32:26
[INFO] [stdout]    |
[INFO] [stdout] 32 |     fn load_log(raw_log: &str) -> Result<Self> {
[INFO] [stdout]    |                          ^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:43:45
[INFO] [stdout]    |
[INFO] [stdout] 43 |     fn load_gz_log_files_py(gzip_filenames: Vec<PyBackedStr>) -> Result<Vec<Self>> {
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:48:30
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn take_feature<'py>(&mut self, py: Python<'py>) -> Bound<'py, PyArray2<f64>> {
[INFO] [stdout]    |                              ^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:51:38
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub const fn take_rank_by_player(&self) -> [u8; 4] {
[INFO] [stdout]    |                                      ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:54:36
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub const fn take_final_scores(&self) -> [i32; 4] {
[INFO] [stdout]    |                                    ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/dataset/grp.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:167:30
[INFO] [stdout]     |
[INFO] [stdout] 167 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:167:26
[INFO] [stdout]     |
[INFO] [stdout] 167 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                          ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 167 |                 .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:175:30
[INFO] [stdout]     |
[INFO] [stdout] 175 |                 .filter(|(_, &has_it)| has_it)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:175:26
[INFO] [stdout]     |
[INFO] [stdout] 175 |                 .filter(|(_, &has_it)| has_it)
[INFO] [stdout]     |                          ^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 175 |                 .filter(|&(_, &has_it)| has_it)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:200:30
[INFO] [stdout]     |
[INFO] [stdout] 200 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/dataset/invisible.rs:200:26
[INFO] [stdout]     |
[INFO] [stdout] 200 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                          ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 200 |                 .filter(|&(_, &c)| c)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/mjai/bot.rs:20:20
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn new(engine: PyObject, player_id: u8) -> Result<Self> {
[INFO] [stdout]    |                    ^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/mjai/bot.rs:20:41
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn new(engine: PyObject, player_id: u8) -> Result<Self> {
[INFO] [stdout]    |                                         ^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/mjai/bot.rs:39:17
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn react_py(&mut self, line: &str, can_act: bool, py: Python<'_>) -> Result<Option<String>> {
[INFO] [stdout]    |                 ^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/mjai/bot.rs:39:34
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn react_py(&mut self, line: &str, can_act: bool, py: Python<'_>) -> Result<Option<String>> {
[INFO] [stdout]    |                                  ^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:448:26
[INFO] [stdout]     |
[INFO] [stdout] 448 |     pub fn from_dir(dir: &str, player_name: &str, disable_progress_bar: bool) -> Result<Self> {
[INFO] [stdout]     |                          ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:448:45
[INFO] [stdout]     |
[INFO] [stdout] 448 |     pub fn from_dir(dir: &str, player_name: &str, disable_progress_bar: bool) -> Result<Self> {
[INFO] [stdout]     |                                             ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:500:26
[INFO] [stdout]     |
[INFO] [stdout] 500 |     pub fn from_log(log: &str, player_id: u8) -> Result<Self> {
[INFO] [stdout]     |                          ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:500:43
[INFO] [stdout]     |
[INFO] [stdout] 500 |     pub fn from_log(log: &str, player_id: u8) -> Result<Self> {
[INFO] [stdout]     |                                           ^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:511:27
[INFO] [stdout]     |
[INFO] [stdout] 511 |     pub const fn total_pt(&self, pts: [i64; 4]) -> i64 {
[INFO] [stdout]     |                           ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:511:39
[INFO] [stdout]     |
[INFO] [stdout] 511 |     pub const fn total_pt(&self, pts: [i64; 4]) -> i64 {
[INFO] [stdout]     |                                       ^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:516:19
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn avg_pt(&self, pts: [i64; 4]) -> f64 {
[INFO] [stdout]     |                   ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:516:31
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn avg_pt(&self, pts: [i64; 4]) -> f64 {
[INFO] [stdout]     |                               ^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:522:21
[INFO] [stdout]     |
[INFO] [stdout] 522 |     pub fn avg_rank(&self) -> f64 {
[INFO] [stdout]     |                     ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:528:24
[INFO] [stdout]     |
[INFO] [stdout] 528 |     pub fn rank_1_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:534:24
[INFO] [stdout]     |
[INFO] [stdout] 534 |     pub fn rank_2_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:540:24
[INFO] [stdout]     |
[INFO] [stdout] 540 |     pub fn rank_3_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:546:24
[INFO] [stdout]     |
[INFO] [stdout] 546 |     pub fn rank_4_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:552:22
[INFO] [stdout]     |
[INFO] [stdout] 552 |     pub fn tobi_rate(&self) -> f64 {
[INFO] [stdout]     |                      ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:559:31
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn avg_point_per_game(&self) -> f64 {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:565:32
[INFO] [stdout]     |
[INFO] [stdout] 565 |     pub fn avg_point_per_round(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:572:32
[INFO] [stdout]     |
[INFO] [stdout] 572 |     pub fn avg_point_per_agari(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:578:36
[INFO] [stdout]     |
[INFO] [stdout] 578 |     pub fn avg_point_per_oya_agari(&self) -> f64 {
[INFO] [stdout]     |                                    ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:584:35
[INFO] [stdout]     |
[INFO] [stdout] 584 |     pub fn avg_point_per_ko_agari(&self) -> f64 {
[INFO] [stdout]     |                                   ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:590:39
[INFO] [stdout]     |
[INFO] [stdout] 590 |     pub fn avg_point_per_riichi_agari(&self) -> f64 {
[INFO] [stdout]     |                                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:596:38
[INFO] [stdout]     |
[INFO] [stdout] 596 |     pub fn avg_point_per_fuuro_agari(&self) -> f64 {
[INFO] [stdout]     |                                      ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:602:37
[INFO] [stdout]     |
[INFO] [stdout] 602 |     pub fn avg_point_per_dama_agari(&self) -> f64 {
[INFO] [stdout]     |                                     ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:608:35
[INFO] [stdout]     |
[INFO] [stdout] 608 |     pub fn avg_point_per_ryukyoku(&self) -> f64 {
[INFO] [stdout]     |                                   ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:615:26
[INFO] [stdout]     |
[INFO] [stdout] 615 |     pub fn avg_agari_jun(&self) -> f64 {
[INFO] [stdout]     |                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:621:33
[INFO] [stdout]     |
[INFO] [stdout] 621 |     pub fn avg_riichi_agari_jun(&self) -> f64 {
[INFO] [stdout]     |                                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:627:32
[INFO] [stdout]     |
[INFO] [stdout] 627 |     pub fn avg_fuuro_agari_jun(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:633:31
[INFO] [stdout]     |
[INFO] [stdout] 633 |     pub fn avg_dama_agari_jun(&self) -> f64 {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:640:33
[INFO] [stdout]     |
[INFO] [stdout] 640 |     pub fn avg_point_per_houjuu(&self) -> f64 {
[INFO] [stdout]     |                                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:646:40
[INFO] [stdout]     |
[INFO] [stdout] 646 |     pub fn avg_point_per_houjuu_to_oya(&self) -> f64 {
[INFO] [stdout]     |                                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:652:39
[INFO] [stdout]     |
[INFO] [stdout] 652 |     pub fn avg_point_per_houjuu_to_ko(&self) -> f64 {
[INFO] [stdout]     |                                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:658:27
[INFO] [stdout]     |
[INFO] [stdout] 658 |     pub fn avg_houjuu_jun(&self) -> f64 {
[INFO] [stdout]     |                           ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:665:23
[INFO] [stdout]     |
[INFO] [stdout] 665 |     pub fn agari_rate(&self) -> f64 {
[INFO] [stdout]     |                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:671:24
[INFO] [stdout]     |
[INFO] [stdout] 671 |     pub fn houjuu_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:677:24
[INFO] [stdout]     |
[INFO] [stdout] 677 |     pub fn riichi_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:683:23
[INFO] [stdout]     |
[INFO] [stdout] 683 |     pub fn fuuro_rate(&self) -> f64 {
[INFO] [stdout]     |                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:689:26
[INFO] [stdout]     |
[INFO] [stdout] 689 |     pub fn ryukyoku_rate(&self) -> f64 {
[INFO] [stdout]     |                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:696:36
[INFO] [stdout]     |
[INFO] [stdout] 696 |     pub fn agari_rate_after_riichi(&self) -> f64 {
[INFO] [stdout]     |                                    ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:702:37
[INFO] [stdout]     |
[INFO] [stdout] 702 |     pub fn houjuu_rate_after_riichi(&self) -> f64 {
[INFO] [stdout]     |                                     ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:708:32
[INFO] [stdout]     |
[INFO] [stdout] 708 |     pub fn chasing_riichi_rate(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:714:31
[INFO] [stdout]     |
[INFO] [stdout] 714 |     pub fn riichi_chased_rate(&self) -> f64 {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:720:27
[INFO] [stdout]     |
[INFO] [stdout] 720 |     pub fn avg_riichi_jun(&self) -> f64 {
[INFO] [stdout]     |                           ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:726:29
[INFO] [stdout]     |
[INFO] [stdout] 726 |     pub fn avg_riichi_point(&self) -> f64 {
[INFO] [stdout]     |                             ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:733:30
[INFO] [stdout]     |
[INFO] [stdout] 733 |     pub fn agari_rate_as_oya(&self) -> f64 {
[INFO] [stdout]     |                              ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:739:30
[INFO] [stdout]     |
[INFO] [stdout] 739 |     pub fn agari_as_oya_rate(&self) -> f64 {
[INFO] [stdout]     |                              ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:745:31
[INFO] [stdout]     |
[INFO] [stdout] 745 |     pub fn houjuu_to_oya_rate(&self) -> f64 {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:752:26
[INFO] [stdout]     |
[INFO] [stdout] 752 |     pub fn avg_fuuro_num(&self) -> f64 {
[INFO] [stdout]     |                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:758:35
[INFO] [stdout]     |
[INFO] [stdout] 758 |     pub fn agari_rate_after_fuuro(&self) -> f64 {
[INFO] [stdout]     |                                   ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:764:36
[INFO] [stdout]     |
[INFO] [stdout] 764 |     pub fn houjuu_rate_after_fuuro(&self) -> f64 {
[INFO] [stdout]     |                                    ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:770:28
[INFO] [stdout]     |
[INFO] [stdout] 770 |     pub fn avg_fuuro_point(&self) -> f64 {
[INFO] [stdout]     |                            ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:777:25
[INFO] [stdout]     |
[INFO] [stdout] 777 |     pub fn yakuman_rate(&self) -> f64 {
[INFO] [stdout]     |                         ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:783:32
[INFO] [stdout]     |
[INFO] [stdout] 783 |     pub fn nagashi_mangan_rate(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:787:16
[INFO] [stdout]     |
[INFO] [stdout] 787 |     fn __str__(&self) -> String {
[INFO] [stdout]     |                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:790:17
[INFO] [stdout]     |
[INFO] [stdout] 790 |     fn __repr__(&self) -> String {
[INFO] [stdout]     |                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:48:26
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub const fn can_chi(&self) -> bool {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:55:26
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub const fn can_kan(&self) -> bool {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:62:28
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub const fn can_agari(&self) -> bool {
[INFO] [stdout]    |                            ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:69:27
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub const fn can_pass(&self) -> bool {
[INFO] [stdout]    |                           ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:76:26
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub const fn can_act(&self) -> bool {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/action.rs:86:17
[INFO] [stdout]    |
[INFO] [stdout] 86 |     fn __repr__(&self) -> String {
[INFO] [stdout]    |                 ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/action.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub const fn player_id(&self) -> u8 {
[INFO] [stdout]    |                            ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:17:24
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub const fn kyoku(&self) -> u8 {
[INFO] [stdout]    |                        ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:23:24
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub const fn honba(&self) -> u8 {
[INFO] [stdout]    |                        ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:29:26
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub const fn kyotaku(&self) -> u8 {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:35:25
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub const fn is_oya(&self) -> bool {
[INFO] [stdout]    |                         ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:42:24
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub const fn tehai(&self) -> [u8; 34] {
[INFO] [stdout]    |                        ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:48:31
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub const fn akas_in_hand(&self) -> [bool; 3] {
[INFO] [stdout]    |                               ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:55:17
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn chis(&self) -> &[u8] {
[INFO] [stdout]    |                 ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:61:17
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn pons(&self) -> &[u8] {
[INFO] [stdout]    |                 ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:67:20
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub fn minkans(&self) -> &[u8] {
[INFO] [stdout]    |                    ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:73:19
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn ankans(&self) -> &[u8] {
[INFO] [stdout]    |                   ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:80:26
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub const fn at_turn(&self) -> u8 {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:86:26
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub const fn shanten(&self) -> i8 {
[INFO] [stdout]    |                          ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:92:24
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub const fn waits(&self) -> [bool; 34] {
[INFO] [stdout]    |                        ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]   --> libriichi/src/state/getter.rs:98:27
[INFO] [stdout]    |
[INFO] [stdout] 98 |     fn last_self_tsumo_py(&self) -> Option<String> {
[INFO] [stdout]    |                           ^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[pymethods]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:103:26
[INFO] [stdout]     |
[INFO] [stdout] 103 |     fn last_kawa_tile_py(&self) -> Option<String> {
[INFO] [stdout]     |                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:110:28
[INFO] [stdout]     |
[INFO] [stdout] 110 |     pub const fn last_cans(&self) -> ActionCandidate {
[INFO] [stdout]     |                            ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:116:28
[INFO] [stdout]     |
[INFO] [stdout] 116 |     fn ankan_candidates_py(&self) -> Vec<String> {
[INFO] [stdout]     |                            ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:124:28
[INFO] [stdout]     |
[INFO] [stdout] 124 |     fn kakan_candidates_py(&self) -> Vec<String> {
[INFO] [stdout]     |                            ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:134:31
[INFO] [stdout]     |
[INFO] [stdout] 134 |     pub const fn can_w_riichi(&self) -> bool {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:140:39
[INFO] [stdout]     |
[INFO] [stdout] 140 |     pub const fn self_riichi_declared(&self) -> bool {
[INFO] [stdout]     |                                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:146:39
[INFO] [stdout]     |
[INFO] [stdout] 146 |     pub const fn self_riichi_accepted(&self) -> bool {
[INFO] [stdout]     |                                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/getter.rs:153:29
[INFO] [stdout]     |
[INFO] [stdout] 153 |     pub const fn at_furiten(&self) -> bool {
[INFO] [stdout]     |                             ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/getter.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:134:26
[INFO] [stdout]     |
[INFO] [stdout] 134 |             .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                          ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:134:22
[INFO] [stdout]     |
[INFO] [stdout] 134 |             .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                      ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 134 |             .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:372:26
[INFO] [stdout]     |
[INFO] [stdout] 372 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                          ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:372:22
[INFO] [stdout]     |
[INFO] [stdout] 372 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                      ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 372 |             .filter(|&(_, &b)| b)
[INFO] [stdout]     |                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:378:26
[INFO] [stdout]     |
[INFO] [stdout] 378 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                          ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:378:22
[INFO] [stdout]     |
[INFO] [stdout] 378 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                      ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 378 |             .filter(|&(_, &b)| b)
[INFO] [stdout]     |                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:386:26
[INFO] [stdout]     |
[INFO] [stdout] 386 |             .filter(|(_, &c)| c)
[INFO] [stdout]     |                          ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:386:22
[INFO] [stdout]     |
[INFO] [stdout] 386 |             .filter(|(_, &c)| c)
[INFO] [stdout]     |                      ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 386 |             .filter(|&(_, &c)| c)
[INFO] [stdout]     |                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:436:30
[INFO] [stdout]     |
[INFO] [stdout] 436 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:436:26
[INFO] [stdout]     |
[INFO] [stdout] 436 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                          ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 436 |                 .filter(|&(_, &c)| c)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:454:30
[INFO] [stdout]     |
[INFO] [stdout] 454 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:454:26
[INFO] [stdout]     |
[INFO] [stdout] 454 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                          ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 454 |                 .filter(|&(_, &c)| c)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:460:30
[INFO] [stdout]     |
[INFO] [stdout] 460 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:460:26
[INFO] [stdout]     |
[INFO] [stdout] 460 |                 .filter(|(_, &c)| c)
[INFO] [stdout]     |                          ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 460 |                 .filter(|&(_, &c)| c)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:468:34
[INFO] [stdout]     |
[INFO] [stdout] 468 |                     .filter(|(_, &c)| c)
[INFO] [stdout]     |                                  ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:468:30
[INFO] [stdout]     |
[INFO] [stdout] 468 |                     .filter(|(_, &c)| c)
[INFO] [stdout]     |                              ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 468 |                     .filter(|&(_, &c)| c)
[INFO] [stdout]     |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:781:9
[INFO] [stdout]     |
[INFO] [stdout] 781 |         &self,
[INFO] [stdout]     |         ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:782:18
[INFO] [stdout]     |
[INFO] [stdout] 782 |         version: u32,
[INFO] [stdout]     |                  ^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/obs_repr.rs:783:24
[INFO] [stdout]     |
[INFO] [stdout] 783 |         at_kan_select: bool,
[INFO] [stdout]     |                        ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:178:26
[INFO] [stdout]     |
[INFO] [stdout] 178 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                          ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:178:22
[INFO] [stdout]     |
[INFO] [stdout] 178 |             .filter(|(_, &b)| b)
[INFO] [stdout]     |                      ^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 178 |             .filter(|&(_, &b)| b)
[INFO] [stdout]     |                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:448:26
[INFO] [stdout]     |
[INFO] [stdout] 448 |     pub fn from_dir(dir: &str, player_name: &str, disable_progress_bar: bool) -> Result<Self> {
[INFO] [stdout]     |                          ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:448:45
[INFO] [stdout]     |
[INFO] [stdout] 448 |     pub fn from_dir(dir: &str, player_name: &str, disable_progress_bar: bool) -> Result<Self> {
[INFO] [stdout]     |                                             ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:500:26
[INFO] [stdout]     |
[INFO] [stdout] 500 |     pub fn from_log(log: &str, player_id: u8) -> Result<Self> {
[INFO] [stdout]     |                          ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:500:43
[INFO] [stdout]     |
[INFO] [stdout] 500 |     pub fn from_log(log: &str, player_id: u8) -> Result<Self> {
[INFO] [stdout]     |                                           ^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:511:27
[INFO] [stdout]     |
[INFO] [stdout] 511 |     pub const fn total_pt(&self, pts: [i64; 4]) -> i64 {
[INFO] [stdout]     |                           ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:511:39
[INFO] [stdout]     |
[INFO] [stdout] 511 |     pub const fn total_pt(&self, pts: [i64; 4]) -> i64 {
[INFO] [stdout]     |                                       ^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:147:27
[INFO] [stdout]     |
[INFO] [stdout] 147 |     pub fn new(player_id: u8) -> Self {
[INFO] [stdout]     |                           ^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:516:19
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn avg_pt(&self, pts: [i64; 4]) -> f64 {
[INFO] [stdout]     |                   ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:516:31
[INFO] [stdout]     |
[INFO] [stdout] 516 |     pub fn avg_pt(&self, pts: [i64; 4]) -> f64 {
[INFO] [stdout]     |                               ^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:157:31
[INFO] [stdout]     |
[INFO] [stdout] 157 |     pub(super) fn update_json(&mut self, mjai_json: &str) -> Result<ActionCandidate> {
[INFO] [stdout]     |                               ^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:157:53
[INFO] [stdout]     |
[INFO] [stdout] 157 |     pub(super) fn update_json(&mut self, mjai_json: &str) -> Result<ActionCandidate> {
[INFO] [stdout]     |                                                     ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:522:21
[INFO] [stdout]     |
[INFO] [stdout] 522 |     pub fn avg_rank(&self) -> f64 {
[INFO] [stdout]     |                     ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:528:24
[INFO] [stdout]     |
[INFO] [stdout] 528 |     pub fn rank_1_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:534:24
[INFO] [stdout]     |
[INFO] [stdout] 534 |     pub fn rank_2_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:164:42
[INFO] [stdout]     |
[INFO] [stdout] 164 |     pub(super) fn validate_reaction_json(&self, mjai_json: &str) -> Result<()> {
[INFO] [stdout]     |                                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::extract_argument::unwrap_required_argument` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:164:60
[INFO] [stdout]     |
[INFO] [stdout] 164 |     pub(super) fn validate_reaction_json(&self, mjai_json: &str) -> Result<()> {
[INFO] [stdout]     |                                                            ^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:540:24
[INFO] [stdout]     |
[INFO] [stdout] 540 |     pub fn rank_3_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:546:24
[INFO] [stdout]     |
[INFO] [stdout] 546 |     pub fn rank_4_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:552:22
[INFO] [stdout]     |
[INFO] [stdout] 552 |     pub fn tobi_rate(&self) -> f64 {
[INFO] [stdout]     |                      ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:173:23
[INFO] [stdout]     |
[INFO] [stdout] 173 |     pub fn brief_info(&self) -> String {
[INFO] [stdout]     |                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/state/player_state.rs:142:1
[INFO] [stdout]     |
[INFO] [stdout] 142 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:559:31
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub fn avg_point_per_game(&self) -> f64 {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:565:32
[INFO] [stdout]     |
[INFO] [stdout] 565 |     pub fn avg_point_per_round(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:572:32
[INFO] [stdout]     |
[INFO] [stdout] 572 |     pub fn avg_point_per_agari(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:578:36
[INFO] [stdout]     |
[INFO] [stdout] 578 |     pub fn avg_point_per_oya_agari(&self) -> f64 {
[INFO] [stdout]     |                                    ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:584:35
[INFO] [stdout]     |
[INFO] [stdout] 584 |     pub fn avg_point_per_ko_agari(&self) -> f64 {
[INFO] [stdout]     |                                   ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:590:39
[INFO] [stdout]     |
[INFO] [stdout] 590 |     pub fn avg_point_per_riichi_agari(&self) -> f64 {
[INFO] [stdout]     |                                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:596:38
[INFO] [stdout]     |
[INFO] [stdout] 596 |     pub fn avg_point_per_fuuro_agari(&self) -> f64 {
[INFO] [stdout]     |                                      ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:602:37
[INFO] [stdout]     |
[INFO] [stdout] 602 |     pub fn avg_point_per_dama_agari(&self) -> f64 {
[INFO] [stdout]     |                                     ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:608:35
[INFO] [stdout]     |
[INFO] [stdout] 608 |     pub fn avg_point_per_ryukyoku(&self) -> f64 {
[INFO] [stdout]     |                                   ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:615:26
[INFO] [stdout]     |
[INFO] [stdout] 615 |     pub fn avg_agari_jun(&self) -> f64 {
[INFO] [stdout]     |                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:621:33
[INFO] [stdout]     |
[INFO] [stdout] 621 |     pub fn avg_riichi_agari_jun(&self) -> f64 {
[INFO] [stdout]     |                                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> libriichi/src/state/update.rs:290:30
[INFO] [stdout]     |
[INFO] [stdout] 290 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                              ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> libriichi/src/state/update.rs:290:26
[INFO] [stdout]     |
[INFO] [stdout] 290 |                 .filter(|(_, &count)| count > 0)
[INFO] [stdout]     |                          ^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 290 |                 .filter(|&(_, &count)| count > 0)
[INFO] [stdout]     |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:627:32
[INFO] [stdout]     |
[INFO] [stdout] 627 |     pub fn avg_fuuro_agari_jun(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:633:31
[INFO] [stdout]     |
[INFO] [stdout] 633 |     pub fn avg_dama_agari_jun(&self) -> f64 {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:640:33
[INFO] [stdout]     |
[INFO] [stdout] 640 |     pub fn avg_point_per_houjuu(&self) -> f64 {
[INFO] [stdout]     |                                 ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:646:40
[INFO] [stdout]     |
[INFO] [stdout] 646 |     pub fn avg_point_per_houjuu_to_oya(&self) -> f64 {
[INFO] [stdout]     |                                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:652:39
[INFO] [stdout]     |
[INFO] [stdout] 652 |     pub fn avg_point_per_houjuu_to_ko(&self) -> f64 {
[INFO] [stdout]     |                                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:658:27
[INFO] [stdout]     |
[INFO] [stdout] 658 |     pub fn avg_houjuu_jun(&self) -> f64 {
[INFO] [stdout]     |                           ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:665:23
[INFO] [stdout]     |
[INFO] [stdout] 665 |     pub fn agari_rate(&self) -> f64 {
[INFO] [stdout]     |                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:671:24
[INFO] [stdout]     |
[INFO] [stdout] 671 |     pub fn houjuu_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:677:24
[INFO] [stdout]     |
[INFO] [stdout] 677 |     pub fn riichi_rate(&self) -> f64 {
[INFO] [stdout]     |                        ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:683:23
[INFO] [stdout]     |
[INFO] [stdout] 683 |     pub fn fuuro_rate(&self) -> f64 {
[INFO] [stdout]     |                       ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:689:26
[INFO] [stdout]     |
[INFO] [stdout] 689 |     pub fn ryukyoku_rate(&self) -> f64 {
[INFO] [stdout]     |                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:696:36
[INFO] [stdout]     |
[INFO] [stdout] 696 |     pub fn agari_rate_after_riichi(&self) -> f64 {
[INFO] [stdout]     |                                    ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:702:37
[INFO] [stdout]     |
[INFO] [stdout] 702 |     pub fn houjuu_rate_after_riichi(&self) -> f64 {
[INFO] [stdout]     |                                     ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:708:32
[INFO] [stdout]     |
[INFO] [stdout] 708 |     pub fn chasing_riichi_rate(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:714:31
[INFO] [stdout]     |
[INFO] [stdout] 714 |     pub fn riichi_chased_rate(&self) -> f64 {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:720:27
[INFO] [stdout]     |
[INFO] [stdout] 720 |     pub fn avg_riichi_jun(&self) -> f64 {
[INFO] [stdout]     |                           ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:726:29
[INFO] [stdout]     |
[INFO] [stdout] 726 |     pub fn avg_riichi_point(&self) -> f64 {
[INFO] [stdout]     |                             ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:733:30
[INFO] [stdout]     |
[INFO] [stdout] 733 |     pub fn agari_rate_as_oya(&self) -> f64 {
[INFO] [stdout]     |                              ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:739:30
[INFO] [stdout]     |
[INFO] [stdout] 739 |     pub fn agari_as_oya_rate(&self) -> f64 {
[INFO] [stdout]     |                              ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:745:31
[INFO] [stdout]     |
[INFO] [stdout] 745 |     pub fn houjuu_to_oya_rate(&self) -> f64 {
[INFO] [stdout]     |                               ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:752:26
[INFO] [stdout]     |
[INFO] [stdout] 752 |     pub fn avg_fuuro_num(&self) -> f64 {
[INFO] [stdout]     |                          ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:758:35
[INFO] [stdout]     |
[INFO] [stdout] 758 |     pub fn agari_rate_after_fuuro(&self) -> f64 {
[INFO] [stdout]     |                                   ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:764:36
[INFO] [stdout]     |
[INFO] [stdout] 764 |     pub fn houjuu_rate_after_fuuro(&self) -> f64 {
[INFO] [stdout]     |                                    ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:770:28
[INFO] [stdout]     |
[INFO] [stdout] 770 |     pub fn avg_fuuro_point(&self) -> f64 {
[INFO] [stdout]     |                            ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:777:25
[INFO] [stdout]     |
[INFO] [stdout] 777 |     pub fn yakuman_rate(&self) -> f64 {
[INFO] [stdout]     |                         ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:783:32
[INFO] [stdout]     |
[INFO] [stdout] 783 |     pub fn nagashi_mangan_rate(&self) -> f64 {
[INFO] [stdout]     |                                ^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> libriichi/src/stat.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | #[pymethods]
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: this warning originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `pyo3::impl_::pymethods::BoundRef::<'a, 'py, pyo3::PyAny>::ref_from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> libriichi/src/stat.rs:787:16
[INFO] [stdout]     |
[WARN] too many lines in the log, truncating it
